개발자 톡

연습문제 톡 금고털이

금고털이 문제

등록일
2022-05-13 14:32:43
조회수
1520
작성자
wcomputer

안녕하세요.

금고털이 문제 질문드립니다.

테스트 케이스를 풀면 2개가 시간초과되어 오답처리가 되는데요.

여러번 시도 해봐도 잘 안풀리더라고요.


인터넷 검색을 해보니 아래와 같은 해답이 공유되어있더라구요.


import sys

w, n = input().split()
w, n = int(w), int(n)
plist = [0 for i in range(n+1)]

for i in range(n):
    mi, pi = input().split()
    mi, pi = int(mi), int(pi)
    plist[pi] += mi

print(plist)

num, total = len(plist)-10
while w>0:
    if w < plist[num]:
        total += (w * num)
        w -= w
    else:
        total += num * plist[num]
        w -= plist[num]
    num -= 1
    
print(total)

근데 위 코드의 문제 점 중 하나가 금속의 kg당 가격이 금속의 개수보다 넘어가면 list의 range를 넘으므로
오답처리가 되어야 하거든요

예시)
100 5 10 1 20 4 30 10 40 2 50 1

근데 정답 제출을 하면 정답처리가 되네요..
혹시 질문에 나와있지 않는 추가 조건이 있는건지요?

#금고털이

이 카테고리의 톡 더보기