반응형
https://programmers.co.kr/learn/courses/30/lessons/49191
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) 같은 문제이다.
반응형
'ETC' 카테고리의 다른 글
프로그래머스 DFS/BFS 타겟 넘버 python 풀이 (0) | 2020.03.08 |
---|---|
프로그래머스 그래프 가장 먼 노드 python 풀이 (0) | 2020.03.05 |
Programmers 코딩 테스트 연습 정렬(Sort) h-index 정답 Python. (0) | 2019.12.15 |
Programmers 코딩 테스트 연습 힙(Heap) 라면공장 정답. (0) | 2019.12.15 |
Programmers 코딩 테스트 연습 힙(Heap) 더 맵게 정답. (0) | 2019.12.14 |