[HR] : ClimbingLeaderboard

yozzum·2022년 7월 11일
0
post-thumbnail

input

7
100 100 50 40 40 20 10
4
5 25 50 120

output

6
4
2
1

문제요약

  • 기존에 제출된 점수들이 있고 아직 게이머 n명의 점수를 기다리고 있다.
  • 게임 한 판이 끝날 때마다 새로운 게이머의 점수가 제출된다.
  • 남은 게이머들이 점수를 모두 제출했을 때, 이들의 등수(랭킹)을 구하시오!

아이디어

dense_rank로 같은 점수는 동일한 랭킹을 부여받고 그 다음은 +1 순위로 매겨진다.
기존에 동일한 점수가 어러 번 제출되었을 수 있기 때문에 set 후 내림차순으로 정렬한다.
게이머의 점수를 하나씩 더하면서 등수를 매겨주고 리스트에 append한다.

이렇게 풀어야지...

def climbingLeaderboard(ranked, player):
    # Write your code here
    scores = sorted(list(set(ranked)), reverse=True)
    player_ranks = []
    for p_score in player:
        while scores and p_score >= scores[-1]:
            scores.pop()
        player_ranks.append(len(scores) + 1)

    return player_ranks
profile
yozzum

0개의 댓글