백준 - 올림픽 / Silver 5 / 8979번 / Python

Young Hun Park·2023년 2월 21일
0

문제 📋

백준 - 올림픽

풀이 📝

import sys

n, k = map(int, sys.stdin.readline().split())
countries = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]


def solution(n, k, countries):
    country_rank = {}
    rank = 1
    cnt = 1

    countries.sort(key=lambda x: (x[1], x[2], x[3]), reverse=True)

    for i in range(n):
        country = countries[i].pop(0)

        if i > 0:
            if countries[i] != countries[i - 1]:
                rank = cnt
        country_rank[country] = rank
        cnt += 1

    return country_rank[k]


print(solution(n, k, countries))


올림픽에 나간 나라들을 메달 수 별로 랭킹을 매기고 특정 나라의 순위를 구하는 문제이다.
정렬하는 것은 어렵지 않았고 다만 메달 수가 같은 나라들은 공동 순위를 매기고
그다음 나라는 그만큼 순위가 뒤로 밀려야 했다.

먼저 country_rank dictionary에서 랭킹 정보를 관리해주었으며
rankcnt 변수를 2개를 사용해서 순위를 계산했다.

rank는 말 그대로 순위 변수이고 cnt는 나라 수만 차례대로 세서
만약 공동 순위가 아니라면 rank = cnt로 초기화해주었다.

profile
개발자에게 유용한 지식

0개의 댓글