문제출처: https://programmers.co.kr/learn/courses/30/lessons/49191
접근법
정답은 플로이드-와샬 알고리즘을 통해 구현해야 했다.
플로이드-와샬은 알고 있었지만 문제를 보고 고민하면서 생각을 못해서
풀이를 보고 이해를 했다.
코드
# 부모 노드는 자식노드들을 모두 이길 수 있다 ? # 부모 노드 + 자식 노드 == n-1 # 플로이드-와샬 def solution(n, results): answer = 0 v = [ [0] * n for _ in range(n) ] for i,j in results: v[i-1][j-1] = 1 v[j-1][i-1] = -1 for k in range(n): for i in range(n): for j in range(n): if v[i][k] == v[k][j] == 1: v[i][j] = 1 v[j][i] = v[k][i] = v[j][k] = -1 for row in v: if row.count(0) == 1: answer += 1 return answer