Scribbling

프로그래머스: 순위 본문

Computer Science/Coding Test

프로그래머스: 순위

focalpoint 2021. 11. 5. 22:32

Floyd-Warshall 알고리즘을 사용한다.

https://focalpoint.tistory.com/6

 

최단 거리 알고리즘

최단 거리 알고리즘을 정리해보자. 1. 다익스트라 알고리즘 - 하나의 node로부터 다른 모든 node까지의 최단거리를 계산 가능 - 음의 간선이 없는 경우에만 유효 - O(VlogV) import heapq def dijkstra(start): pq

focalpoint.tistory.com

def solution(n, results):
    graph = [[0] * (n+1) for _ in range(n+1)]
    for result in results:
        w, l = result
        graph[w][l] = 1
        graph[l][w] = -1
    
    for k in range(1, n+1):
        for i in range(1, n+1):
            for j in range(1, n+1):
                if graph[i][j] == 0:
                    if graph[i][k] == graph[k][j]:
                        graph[i][j] = graph[i][k]
    
    answer = 0
    for i in range(1, n+1):
        c = 0
        for j in range(1, n+1):
            if graph[i][j] != 0:
                c += 1
        if c == n - 1:
            answer += 1
    return answer