[Softeer] S1309 성적 평가
[Softeer]
Question
Language: Python
해당 문제는 각 대회별 성적을 조사해서 각 대회별 등수를 계산하고, 최종적으로 점수의 합산을 해서 최종 등수를 구하는 문제이다.
동점인 경우에 대해서는 공동 등수가 발생할 수 있기 때문에 같은 점수를 가지는 사람의 명수를 저장하는 변수를 잡아서 등수의 변화를 계산한다.
Solution
import sys
from collections import Counter
def cal_ranking(scores):
same_rank_count,rank=1,0
rankings=[0]*n
scores.sort(key=lambda x: -x[0])
prev_score=scores[0]
for score, index in scores:
#점수가 다른 경우
if prev_score != score:
prev_score=score
rank+=same_rank_count
same_rank_count=1
#동점인 경우
else:
same_rank_count+=1
rankings[index]=rank
return rankings
def solution():
total_score=[]
for i in range(n):
score=0
for j in range(3):
score+=contests[j][i][0]
total_score.append((score,i))
for i in range(3):
print(*cal_ranking(contests[i]))
print(*cal_ranking(total_score))
if __name__ == "__main__":
n=int(sys.stdin.readline())
contests=[list((score,index) for index, score in enumerate(list(map(int,sys.stdin.readline().split())))) for _ in range(3)]
solution()
댓글남기기