[이 문제의 핵심]
- 이긴사람과 진사람을 나눠서 set집합으로 설정한다는 것!
- 그리고 1번에게 진 사람은 1번을 이긴사람한테도 반드시 진다!
- 1번을 이긴 사람과 진 사람을 합치면 n-1이라는 것!
[풀이 코드]
from collections import defaultdict
def solution(n, results):
answer = 0
win = defaultdict(set)
lose = defaultdict(set)
for a,b in results:
win[a].add(b) #내가 이긴 선수들
lose[b].add(a) #나를 이긴 선수들
print(win)
print(lose)
for i in range(1,n+1):
for w in lose[i]:
win[w].update(win[i])
for l in win[i]:
lose[l].update(lose[i])
for i in range(1,n+1):
if len(win[i])+len(lose[i])==n-1:
answer+=1
return answer
📕 문제 확인
출처: 프로그래머스
링크: https://programmers.co.kr/learn/courses/30/lessons/49191