BOJ - 14471

주의·2023년 11월 18일
0

boj

목록 보기
7/214

백준 문제 링크
포인트 카드

❓접근법

  1. Ai가 N보다 크거나 같아야 경품을 얻을 수 있다.
  2. 당첨 도장이 N보다 작은 경우 N-Ai를 계산하여 temp에 넣어준다
  3. 당첨 도장이 N보다 큰 경우 M-1(얻고자 하는 경품 수)에서 1을 빼준다.
  4. temp를 오름차순 정렬하면, 당첨까지 필요한 도장의 수가 작은 개수의 값부터 나오게 되는데, 필요한 경품 수만큼 for 반복문으로 temp의 값을 더해준다. 예를 들어 필요한 경품 수 = 2개, temp = [2,5,6,7]이면 2+5를 더한 값이 경품을 얻기 위해 필요한 비용의 최솟값인 것이다.

👌🏻코드

N,M = map(int, input().split(" "))
card = []
cnt = M-1
temp = []
cost = 0

for _ in range(M):
    card.append(list(map(int ,input().split(" "))))
    
for i in range(len(card)):
    if card[i][0] < N:
        temp.append(N-card[i][0])
    else:
        cnt -= 1
    
temp.sort()
    
if cnt > 0:
    for i in range(cnt):
        cost += temp[i]
            
print(cost)

0개의 댓글