프로그래머스 · PCCE 기출문제 8번 창고 정리
문제
창고의 각 칸에 담긴 물건 이름 리스트 storage와 개수 리스트 num이 주어진다(길이는 같고 30 이하). 같은 물건은 한 칸에 겹쳐 쌓아 정리한 뒤, 개수가 가장 많은 물건의 이름을 반환하는 solution 함수가 올바르게 동작하도록 한 줄을 고친다. 가장 많은 물건이 둘 이상인 경우는 없다.
풀이
코드를 순서대로 따라 읽으면서 어디가 틀렸는지 확인했다. 실행 결과를 보면 기댓값은 "pencil" 같은 이름인데 결괏값은 4, 1, 7, 5처럼 정수가 나온다. 그렇다면 결과 리스트에 값을 넣는 단계에서 이름 자리에 개수가 들어간 것이다.
9번째 줄에서 clean_storage에 값을 추가할 때 10번째 줄과 같은 num[i]를 넣고 있었다. clean_storage에는 물건 이름인 storage[i]를 넣어야 한다.
def solution(storage, num):
clean_storage = []
clean_num = []
for i in range(len(storage)):
if storage[i] in clean_storage:
pos = clean_storage.index(storage[i])
clean_num[pos] += num[i]
else:
clean_storage.append(storage[i])
clean_num.append(num[i])
# 아래 코드에는 틀린 부분이 없습니다.
max_num = max(clean_num)
answer = clean_storage[clean_num.index(max_num)]
return answer