Search
Duplicate

순위

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(n, results): # A[i][j] = i가 j를 이겼으면 1, i가 j에게 졌으면 -1 A = [[0 for i in range(101)] for j in range(101)] for win, lose in results: A[win][lose] = 1 A[lose][win] = -1 for i in range(1, n+1): for j in range(1, n+1): # i==j이거나, 이미 정보를 유추할 수 있는 경우는 스킵합니다. if A[i][j] != 0: continue # 나머지 k를 순회하면서, i가 j를 이겼는지 간접적으로 유추해봅니다. for k in range(1, n+1): if A[i][k] == 1 and A[k][j] == 1: A[i][j] = 1 A[j][i] = -1 if A[i][k] == -1 and A[k][j] == -1: A[i][j] = -1 A[j][i] = 1 answer = 0 for i in range(1, n+1): if sum([x == 0 for x in A[i][1:n+1]]) == 1: answer += 1 return answer
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges