본문 바로가기

ETC

프로그래머스 그래프 순위 python 문제풀이

반응형

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

 

코딩테스트 연습 - 순위 | 프로그래머스

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

programmers.co.kr

from collections import defaultdict
def solution(n:int,results:list)->int:
    # 정확하게 순위를 매길 수 있는 선수들의 수를 구한다.
    # 한 선수가 다른 선수와 경쟁했을 때, 이기고 진 횟수의 합이 정확하게 n-1번 이라면 이 선수의 순위를 알 수 있다
    # 먼저 results의 결과를 통해 결과를 만든다.
    # 그 후 results의 결과를 통해 유추할 수 있는 결과를 갱신한다
    answer=0
    win,lose = defaultdict(set),defaultdict(set)
    for result in results:
        win[result[0]].add(result[1])
        lose[result[1]].add(result[0])
    for i in range(1,n+1):
        for winner in lose[i]: win[winner].update(win[i]) # 힘의 우열로 인해 a가 이긴 사람 다이김
        for loser in  win[i]: lose[loser].update(lose[i]) # 힘의 우열로 인해 a가 진 사람께 다 짐
    for i in range(1,n+1):
        if len(win[i]|lose[i]) == n - 1: answer += 1
    return answer

간결하고 가독성 좋은 코드가 파이썬 다운 코드다

그래프 문제인데 그래프 문제라기 보다는 자료구조 (set) 같은 문제이다.

반응형