title: "[프로그래머스] 순위 Python 파이썬 해설 (Level 3) - 이도훈"
cleanUrl: "programmers/49191"
description: "프로그래머스 Level 3 문제 [순위]의 풀이를 정리합니다."
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
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges