[해커랭크] Climbing the Leaderboard (Python)

eenzeenee·2023년 6월 27일

CodingtestPractice

목록 보기
5/13

문제 링크

https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem

주의사항

각 player가 지금 당장 play했을 때의 등수를 구하는 것

  • 나는 여기서 순서대로 play 후 최종 등수를 구한다고 착각했다..

문제 풀이

def climbingLeaderboard(ranked, player):
    ranked = sorted(set(ranked), key=lambda x:-x)
    
    idx = len(ranked)-1
    result = []
    
    for p in player:
        while ranked[idx] <= p and idx >= 0:
            idx -= 1
        if idx < 0:
            result.append(1)
            continue
        result.append(idx+1+1) 
    return result
  • ranked를 꼬리부터 순회하며 player의 등수를 찾으면 이미 등수를 찾은 위치 이후의 내용은 더이상 살펴보지 않아도 된다.
  • idx<0인 경우는 이미 ranked를 다 순회했다는 의미이므로 ranked의 1등 자리도 이미 넘겼다는 뜻 = 지금 play한 점수가 1등
  • result에 idx + 1 + 1을 넣는 이유
    +1 : 리스트 인덱스 0부터 시작하니까
    +1 : 내가 들어갈 자리
profile
Steadily

0개의 댓글