ALGORITHM/PYTHON

백준 BAEKJOON 29723번 브실이의 입시전략 [PYTHON/파이썬]

칼코
반응형

 

 

 

 

 

백준 BAEKJOON 29723번 브실이의 입시전략 [PYTHON/파이썬]


<문제 출처> (SILVER Ⅴ)

https://www.acmicpc.net/problem/29723

 

29723번: 브실이의 입시전략

첫 번째 줄에 브실이가 수강한 과목 수 $N$과 브실대학에서 요구하는 과목 수 $M$, 그리고 브실대학에서 공개한 과목 수 $K$가 공백으로 구분되어 주어진다. $(1 \le K \le M \le N \le 10\,000)$ 그다음 $N$줄

www.acmicpc.net

 

 

 

 

 

 

 

<풀이>

딕셔너리로 구현하여 풀었다.
먼저 브실이가 수강한 과목을 딕셔너리로 만든 후
브실대학에서 공개한 과목의 점수를 더한 뒤 딕셔너리에서 삭제시켰다.

그리고 딕셔너리를 점수를 기준으로 잡고 오름차순으로 정렬한 뒤
브실대학에서 요구하는 과목 수가 있기 때문에 M-K로 for 문을 순회하여
남은 과목의 최소 점수와 최대 점수를 구했다.

 

 

 

 

 

 

 

<코드>

N, M, K = map(int, input().split())
subject = {}
for _ in range(N):
    s, p = input().split()
    subject[s] = int(p)

open_subject = 0  # 브실대학에서 공개한 과목 점수 합
for _ in range(K):
    t = input()
    open_subject += subject[t]
    del subject[t]

subject = sorted(subject.items(), key=lambda x: x[1])
min_score, max_score = 0, 0  # 나머지 과목 최소, 최대 점수
for i in range(M - K):
    min_score += subject[i][1]
    max_score += subject[-i - 1][1]

print(open_subject + min_score, open_subject + max_score)

 

 

 

 

 

 

 

반응형