
자료구조
정렬
해시를 사용한 집합과 맵
백준 29723번 브실이의 입시전략


import sys
input = sys.stdin.readline
n, m, k = map(int, input().split()) # 과목 개수, 요구과목 개수, 공개과목 개수
subject = dict() # 과목,점수 저장할 딕셔너리
for _ in range(n):
s, p = input().strip().split() # 과목, 점수
subject[s] = int(p) #딕셔너리에 점수 저장
score = 0 # 점수
for _ in range(k):
t=input().rstrip() # 공개한 과목
score+=subject[t] # 과목의 점수 더하기
del subject[t] # 해당 과목 딕셔너리에서 삭제
subject = sorted(subject.items(), key=lambda x: x[1]) # 점수 순으로 정렬
max_score, min_score = score,score # 최대 점수, 최소 점수
for i in range(m-k):
max_score += subject[i][1] # 최댓값 순 더해주기
min_score += subject[-i-1][1] # 최솟값 순 더해주기
print(max_score, min_score) #최대점수 최소점수 출력
과목과 점수가 둘 다 필요하므로 딕셔너리를 사용하였다.
최댓값과 최솟값이 필요하므로 정렬을 하기 위해 lambda를 사용하였다.
새롭게 안 개념은 없었다.
내일의 알고리즘 문제를 풀어보고 이해하기
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL