본문 바로가기
코딩 테스트/문제 풀기

[프로그래머스] 순위

by hazel_ 2021. 5. 3.

programmers.co.kr/learn/courses/30/lessons/49191

 

코딩테스트 연습 - 순위

5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2

programmers.co.kr

 

어떻게 풀어야할지 생각을 많이 해야했던 문제..ㅠ

def solution(n, results):
    answer=0

    win={x:set() for x in range(n+1)}
    lose={x:set() for x in range(n+1)}

    for result in results:
        win[result[0]].add(result[1])
        lose[result[1]].add(result[0])

    for i in range(1, n+1):
        # i를 이긴 사람들 -> i가 이긴 사람들한테도 이길거야
        for winner in lose[i]:
            win[winner].update(win[i])
        # i에게 진 사람들 -> i를 이긴 사람들한테도 질거야
        for loser in win[i]:
            lose[loser].update(lose[i])

    for i in range(1, n+1):
        if len(win[i])+len(lose[i])==n-1:
            answer+=1

    return answer

댓글