백준 10810번 공 넣기
문제
바구니 N개(1 이상 100 이하)가 있고 처음에는 모두 비어 있다. 공을 넣는 작업이 M번(1 이상 100 이하) 주어지며, 각 작업은 i j k 형태로 i번부터 j번 바구니까지 k번 공을 넣는다는 뜻이다. 이미 공이 있으면 빼고 새 공을 넣는다. 모든 작업이 끝난 뒤 1번부터 N번 바구니에 든 공의 번호를 공백으로 구분해 출력하며, 빈 바구니는 0이다.
풀이
바구니 개수만큼 0이 담긴 리스트를 만들고, 작업마다 해당 구간을 슬라이싱으로 지정해 k로 채운다. 바구니 번호는 1부터, 리스트 인덱스는 0부터 시작하므로 구간은 start-1:end가 되고 길이는 end-(start-1)이다. 마지막에 map(str, ...)으로 문자열로 바꿔 공백으로 이어 붙여 출력한다.
basket_cnt, action_cnt = map(int, input().split())
# 바구니 개수만큼 0을 원소로 갖는 리스트 생성
result = [0 for _ in range(basket_cnt)]
# 공을 바꾸는 횟수만큼 루프문 생성
for _ in range(action_cnt):
start, end, ball_num = map(int, input().split())
# 구간 길이만큼 리스트 생성 후 값 변경
result[start-1:end] = [ball_num]*(end-(start-1))
print(' '.join(map(str, result)))