목차

순위

ps
링크programmers.co.kr/…
출처프로그래머스
문제 번호49191
문제명순위
레벨Level 3
분류

그래프

시간복잡도O(V^3)
인풋사이즈V<=100
사용한 언어Python
해결날짜2021/07/02
태그

고득점 Kit - 그래프

풀이

코드

"""Solution code for "Programmers 49191. 순위".

- Problem link: https://programmers.co.kr/learn/courses/30/lessons/49191
- Solution link: http://www.teferi.net/ps/problems/programmers/49191
"""


def solution(n, results):
    higher_rankers = [set() for _ in range(n)]
    lower_rankers = [set() for _ in range(n)]
    for a, b in results:
        higher_rankers[a - 1].add(b - 1)
        lower_rankers[b - 1].add(a - 1)

    for i in range(n):
        for higher_ranker in higher_rankers[i]:
            lower_rankers[higher_ranker].update(lower_rankers[i])
        for lower_ranker in lower_rankers[i]:
            higher_rankers[lower_ranker].update(higher_rankers[i])            
            
    answer = sum(1 for i in range(n)
                 if len(higher_rankers[i]) + len(lower_rankers[i]) == n - 1)
    return answer