
def solution(n, results):
answer = 0
graph = [[False] * (n+1) for _ in range(n+1)]
for win, lose in results:
graph[win][lose] = True
for k in range(1, n+1):
for i in range(1, n+1):
for j in range(1, n+1):
# result로 만들어 놓은 환경에서 확인할 것. 그래서 i, k가 쌍이고 k, j가 쌍임.
# i가 j를 이겼거나(True) j 가 i를 이겼다면 [i][j]를 True로 바꿈 = 승부가 났음
if graph[i][k] and graph[k][j]:
graph[i][j] = True
for i in range(1, n+1):
count = 0
for j in range(1, n+1):
# 같은 사람이면 걍 넘어감
if i == j:
continue
# 본인 외의 다른 사람과의 결과가 있다면 카운트 올림
if graph[i][j] or graph[j][i]:
count += 1
# 본인을 제외한 모든 사람들의 결과를 알 수 있다면 answer에 +1
if count == n-1:
answer += 1
return answer반응형
'프로그래머스 - Python > 알고리즘 고득점 Kit' 카테고리의 다른 글
| [프로그래머스 LV.3] 베스트앨범 (0) | 2026.02.19 |
|---|---|
| [알고리즘 고득점 Kit] 그래프 - 가장 먼 노드 (0) | 2025.10.02 |
| 알고리즘 고득점 Kit - 여행경로(DFS) (2) | 2025.07.10 |
| 알고리즘 고득점 Kit - DFS/BFS - 단어 변환 (0) | 2025.06.17 |
| 알고리즘 고득점 Kit - BFS - 게임 맵 최단거리 (0) | 2025.06.17 |