첫째 줄 N(바구니 개수) M(넣을 공 횟수)
나머지 N 줄 i j k (M개의 줄에 걸쳐서 공을 넣는 방법: i번 바구니부터 j 바구니까지 k번 번호가 적혀있는 공을 넣는다는 뜻)
ex) 2 5 6은 2번 바구니부터 5번바구니까지 6번 공을 넣는다는 뜻
1번 바구니부터 N번 바구니에 들어있는 공의 번호를 공백으로 구분해 출력. 공이 들어있지 않은 바구니는 0을 출력
bucket, count = map(int, input().split())
result = []
result = [0] * bucket
real_count = 0
while True:
try:
a, b, c = map(int, input().split())
for i in range(b - a + 1):
result[a + i] = c
real_count += 1
except real_count == count:
break
for i in range(len(result)):
print(result[i], end = " ")
먼저, 첫 번째 줄에서 바구니의 개수와 값을 넣을 횟수를 입력받고, try와 except 구문을 사용하여 지정된 횟수만큼 값을 입력받는다. 입력 횟수가 다 채워지면 더 이상 값을 받지 않도록 처리하였으며, result[a + i] = c를 통해 리스트의 값을 해당 범위에 맞춰 대체하는 방식으로 구현하였다.
결과: 틀림
정답
n, m=map(int, input().split())
box = [0]*n
for _ in range(m) :
i,j,k = map(int, input().split())
for idx in range(i, j+1):
box[idx-1] = k
for i in range(n):
print(box[i], end=' ')
내 답지에서 for i in range(b - a + 1)를 잘못사용하였다. 또한 result = []을 할 필요도 없었는데 하였다.
틀린 이유
1. for i in range(b - a + 1)의 사용
2. result = []를 사용한 점
3. except real_count == count: 구문
이 구문의 경우 try-except 구문에서 real_count = count와 같은 조건은 사용할 수 없다. 이것은 애러처리할 때만 유효하다.
고찰
이 문제에서 리스트 외에 deque, set, dict 등을 사용하면 더 유용할까?
deque는 양쪽 끝에서 효율적인 삽입/삭제가 가능한 자료 구조 하지만 deque를 사용하는 것이 특별한 이점을 주지는 않는다.
set은 중복을 허용하지 않는 자료 구조로, 값을 빠르게 추가하거나 제거할 수 있다. 하지만 순서가 없는 자료 구조이기 때문에 적합하지 않다.
dict는 키와 값으로 데이터를 저장하는 자료 구조. dict는 기본적으로 순서를 보장하지 않는다.
결론적으로 여기서 list가 가장 적합한 자료구조다.
'Coding Test (코딩 테스트)' 카테고리의 다른 글
코딩테스트 14일차(2025.01.30) - 백준5597번(과제 안 내신 분..?) (0) | 2025.01.30 |
---|---|
코딩테스트 13일차(2025.01.29) - 백준10813번(공 바꾸기) (0) | 2025.01.29 |
코딩테스트 12일차(2025.01.28) - 백준2562번(최댓값) (0) | 2025.01.28 |
코딩테스트 12일차(2025.01.28) - 백준10818번(최소, 최대) (0) | 2025.01.28 |
코딩테스트 11일차(2025.01.27) - 백준10871번(X보다 작은 수) (0) | 2025.01.27 |