본문 바로가기
백준 - 파이썬/단계별 풀어보기 - 4 (1차원 배열)

[백준/파이썬] 10810번 공 넣기 | 리스트초기화

by miiinn 2025. 4. 30.

# 공 넣기

N, M = map(int, input().split())

# 바구니에 공을 넣기 전에 크기 N만큼 0으로 초기화해야한다
basket = [0] * N

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

print(*basket)

🧨 문제점 1: basket 초기화가 안 되어 있음

basket = []

이건 빈 리스트라서, basket[i-1] = k처럼 인덱스로 접근하면 IndexError가 납니다.
→ 바구니에 공을 넣기 전에 크기 N만큼 0으로 초기화해야 해요.

🧨 문제점 2: for i in range(j+1): 부분이 잘못됐음

여기서 i는 이미 공을 넣을 구간의 시작 인덱스인데, for i in range(j+1)로 덮어쓰면서 오동작합니다.
→ 그리고 이 반복문은 i부터 j까지 넣는 거니까 **range(i, j+1)**이 되어야 해요.

 

-1을 하는 이유는 문제에서 바구니 번호가 1번부터 시작하지만, 파이썬 리스트는 0번부터 시작하기 때문이에요.

 

 

💡 출력에서 *basket을 쓰는 이유:

  • print(*basket) → 리스트 요소를 공백으로 구분해서 출력해줘서 백준 출력 형식에 맞아요.