728x90
반응형
성적 데이터를 토대로 각 대회마다 등수를 출력하고, 모든 대회 점수를 합산한 최종 등수를 출력하면된다.
이 문제에서 enumerate를 활용하였다.
우선 각 대회 점수를 입력 받음과 동시에 enumerate와 lambda를 사용하여 리스트안의 각 요소의 1번 인덱스 기준으로 내림차순 정렬을 했다.
그리곤 반복문을 통해 등수를 매겨 출력했다.
생각의 정리가 된다면 쉬운 문제다.
import sys
input = sys.stdin.readline
N = int(input())
all_score = [0] * N
# 각 대회별 점수 매기기
for _ in range(3):
score = list(map(int, input().split()))
for i in range(N):
all_score[i] += score[i]
enu_score = sorted(enumerate(score), key=lambda x:x[1], reverse=True)
rank = [0] * N
cnt = 1
tmp = enu_score[0][1]
peo = 0
for per in enu_score:
# print(tmp, per)
if per[1] == tmp:
rank[per[0]] = cnt
peo += 1
else:
tmp = per[1]
cnt += peo
peo = 1
rank[per[0]] = cnt
print(*rank)
# 최종 등수 매기기
fin_score = sorted(enumerate(all_score), key=lambda x:x[1], reverse=True)
tmp = fin_score[0][1]
fin_rank = [0] * N
cnt = 1
peo = 0
for idx, sco in fin_score:
if sco == tmp:
fin_rank[idx] = cnt
peo += 1
else:
tmp = sco
cnt += peo
fin_rank[idx] = cnt
peo = 1
print(*fin_rank)
728x90
반응형
'알고리즘 > python' 카테고리의 다른 글
[프로그래머스] lv2 하노이의 탑_python (0) | 2024.03.27 |
---|---|
[softeer] lv3 순서대로 방문하기_python (2) | 2024.03.25 |
[softeer] lv3 우물 안 개구리_python (0) | 2024.03.25 |
[softeer] lv3 출퇴근길_python (0) | 2024.03.25 |
[프로그래머스] lv2 H-index_python (1) | 2024.03.24 |