10810 공넣기

N, M = map(int, input().split())
basket = [0] * N

for a in range(M):   # 몇 번 공을 넣을지에 대한 반복문. 따라서 a는 다른 문자도 사용가능.
    i, j, k = map(int, input().split()) 
    for ball in range(i, j+1):  # i번부터 j번까지의 바구니를 구간으로 설정.
        basket[ball-1] = k  # ball에서 -1을 해줘야함. 그 이유는 컴퓨터 상에서는 0번째부터 시작이기 때문.
for a in range(N):
    print(basket[a], end=' ')

10813 공 바꾸기

N, M = map(int, input().split())
basket = []

for i in range(1,N+1):
    basket.append(i)

for a in range(M):
    i, j = map(int, input().split())
    basket[i-1], basket[j-1] = basket[j-1], basket[i-1]

for i in range(N):
    print(basket[i], end = " ")

처음에 공에 대한 배열 문제를 풀 때는 리스트를 여러 개 만들어줘야하나?? 생각했는데 그게 아니었다. 문제를 잘 읽어보니 각 바구니에는 한 개의 공이 들어간다고 하였기 때문에 리스트 하나에 값을 여러개 넣어줘도 문제가 없었다는 걸 알게 되었다. 따라서 이 문제들은 그것만 생각해줬으면 쉽게 넘어갈 수 있을 것 같다.

 

5597 과제 안 내신 분..?

ll_T = []
ll = []
ll_F = []

for i in range(1, 31):
    ll_T.append(i)
    
for i in range(28):
    a = int(input())
    ll.append(a)
    
for i in range(ll):
    if i not in ll_T:
        ll_F.append(i)
    else:
        pass
    
print(min(ll_F))
print(max(ll_F))
students = [i for i in range(1,31)]

for a in range(28):
    plus = int(input())
    students.remove(plus)
    
print(min(students))
print(max(students))

5597 첫 번째 코드는 내가 이 문제를 처음 보고 푼 코드인데, 런타임 에러가 떠서 무엇이 문제인지 확인해보니 코드가 길어서 런타임 에러가 뜬 것 같다. 그래서 구글링하여 찾아보니 생각보다 쉽게 나왔다.

그래서 보니깐 나보다 쉬웠다.

나는 일단 1부터 31까지의 students list를 만들어주고 만약 여기에 제출한 학생의 이름의 명단에 빠진 번호가 있으면 그걸 또 빈 리스트에다가 저장을 하여 그 리스트의 min, max 값을 구해주는 코드를 짰는데 물론 돌아가겠지만 너무 코드가 길어진다. 따라서 밑에 있는 코드로 하면 더 편한데 그 이유는 두 번째 코드는 students list를 만들고 28명의 값들을 각각 받아 그걸 기존에 있는 students list에서 빼주고 그럼 제거되지 않고 남아있는 친구들이 과제를 제출하지 않은 친구들일테니깐 그 친구들의 min, max 값을 해주면 답이 나온다. 유연하게 사고하는 것이 중요한 것 같다. 

 

3052 나머지

num_list = []

for i in range(10):
    num = int(input())
    remain = num % 42 
    if remain in num_list:
        pass
    else:
        num_list.append(remain)
print(len(num_list))

10811 바구니 뒤집기 (reverse 사용)

N, M = map(int, input().split())
basket = [i for i in range(1, N+1)]

for a in range(M):
    i, j = map(int, input().split())
    ll = basket[i-1:j]
    ll.reverse()
    basket[i-1:j] = ll
    
for i in range(N):
    print(basket[i], end = " ")

1564 평균

N = int(input())
score = list(map(int, input().split()))
modify = []

for i in range(N):
    modify_score = score[i]/max(score)*100
    modify.append(modify_score)

print(float(sum(modify)/len(modify)))

'알고리즘' 카테고리의 다른 글

RGB to HEX  (1) 2024.01.15
백준 파이썬 - 문자열 1  (1) 2023.11.21
백준 파이썬 - 배열  (0) 2023.09.16
백준 파이썬 - 2525  (0) 2023.07.06
백준 파이썬 - 1330, 9498, 2753, 14681, 2884  (0) 2023.07.05

+ Recent posts