[프로그래머스] 순위

섬섬's 개발일지·2022년 3월 1일
0

프로그래머스

목록 보기
42/50

문제

선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 선수의 수는 1명 이상 100명 이하입니다.
  • 경기 결과는 1개 이상 4,500개 이하입니다.
  • results 배열 각 행 [A,B]는 A 선수가 B 선수를 이겼다는 의미입니다.
  • 모든 경기 결과에는 모순이 없습니다.

풀이

DFS

코드

def solution(n, results):
    maps = [ [0] * (n) for _ in range(n) ]
    graph = [[] for _ in range(n)]
    
    for s, e in results:
        graph[s-1].append(e-1)
    for i in range(0, n):
        visited = [False] * n
        dfs(i, i, maps, graph, visited)
    
    answer = 0
    for i in maps:
        if 0 not in i:
            answer += 1
    return answer

# start: 시작점, node: 현재 선수 번호
def dfs(start, node, maps, results, visited):
    visited[node] = True
    maps[start][node] = 1
    maps[node][start] = -1
    for i in results[node]:
        if not visited[i]:
            dfs(start, i, maps, results, visited)
profile
섬나라 개발자

0개의 댓글