문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/250126
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
서론
RPG 등의 게임에서 사용하는 "정렬" 기능과 동일해 보여서 관심이 갔다.
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
코딩 하기 전 드는 생각 정리
1. clean_storage 와 clean_num이 주어져 있으므로 입력 받은 리스트를 정렬 후 max를 이용하는구나
2. for 문과 range 내부를 보니 입력하는 storage 요소의 개수만큼 반복 하고, if 문 내 조건을 보니 겹치는 내용이 생기면 clean_num에 숫자를 추가하는 구조임을 알 수 있다.
3. else문은 처음 등장하는 요소가 생기면 clean_storage에 추가한다.
코드 수정 내용
코드 원문 clean_storage.append(num[i])
코드 수정 내용 clean_storage.append(storage[i])
clean_storage.append(num[i])로 쓰면 예를들어 처음 pencil이 입력 되었을 때, clean storage에 숫자가 추가된다. 이는 밑에 있는 clean_num과 완전히 같은 리스트가 되어버린다. 숫자만 남은 리스트가 되었을 때, answer에서 가장 높은 숫자가 result로 반환되므로 storage[i]로 코드를 수정해 문자열이 정상적으로 출력되게끔 한다.