solution
1. dictionary 이용 { 참가자 번호 : 점수 }
2. 소수 첫째 자리까지 출력 print('%.1f' % sum)
# 2865, 나는 위대한 슈퍼스타K
import sys
# N: 예선 참가자 수, M: 장르, K: 본선 진출자 수
N, M, K = map(int, sys.stdin.readline().split())
candidate_score = {}
for i in range(N):
candidate_score[i+1] = 0
for i in range(M):
genre = list(map(float, sys.stdin.readline().split()))
for j in range(0, 2*N, 2):
if genre[j+1] > candidate_score[genre[j]]:
candidate_score[genre[j]] = genre[j+1]
score = sorted(list(candidate_score.values()), reverse=True)
sum = sum(score[:K])
print('%.1f' % sum) # 소수 첫째 자리
29380KB
68ms
문제 출처 https://www.acmicpc.net/problem/2865
2865번: 나는 위대한 슈퍼스타K
문제 상근이는 한국 최고의 가수를 뽑는 "나는 위대한 슈퍼스타K"의 감독이다. 상근이는 다음과 같이 참가자를 선발하려고 한다. "나는 위대한 슈퍼스타K"의 예선에는 N명이 참가했고, 서로 다른
www.acmicpc.net
'알고리즘 > 정렬' 카테고리의 다른 글
자바 | 백준 | 10814 | 나이순 정렬 | Comparator, 람다식 (0) | 2021.02.05 |
---|---|
백준 | 파이썬 | 1431 | 시리얼 번호 (0) | 2020.08.06 |
파이썬 | 백준 | 1728 | 구슬 굴리기 | list에 있는지 : in 없는지 : not in (0) | 2020.08.04 |
파이썬 | 백준 | 10825 | 국영수 (0) | 2020.07.30 |