python/프로그래머스

[PCCE 기출문제] 8번 / 창고 정리 Python

jjaehhoneo 2025. 9. 2. 12:17

문제 설명

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]로 코드를 수정해 문자열이 정상적으로 출력되게끔 한다.