코딩테스트 파이썬/Softeer

Softeer 연습문제(2단계) - 금고털이

세용용용용 2024. 6. 25. 21:19

Candidate | Softeer Assessment UI

 

Candidate | Softeer Assessment UI

 

softeer.ai

 

나의 풀이

import sys

def _main(bag, n_list):
    answer = 0
    for now_w, now_p in n_list:
        if (bag >= now_w):
            bag -= now_w
            answer += (now_w * now_p)
        else:
            answer += (bag * now_p)
            break
    return answer

bag, n_ct = map(int, sys.stdin.readline().rstrip().split())
n_list = [tuple(map(int, sys.stdin.readline().rstrip().split())) for _ in range(n_ct)]
n_list = sorted(n_list, key=lambda x:-x[1])
print(_main(bag, n_list))

 

시간 복잡도

n_list = sorted(n_list, key=lambda x:-x[1]) : 정렬 알고리즘 ( 선형 로그 시간 복잡도 )
해당 알고리즘 시간 복잡도 : 선형 로그 시간 복잡도 ( O(n log n) )