Menu
CoddyTech

The Celebrity Problem

파티에 n명의 사람이 있고, 각 사람은 0부터 n-1까지 번호가 매겨져 있습니다. matrix[i][j]가 사람 i가 사람 j를 알고 있으면 1, 그렇지 않으면 0인 n × n 행렬이 주어집니다. 아는 관계는 일방적일 수 있습니다. 즉, i는 j를 알지만 j는 i를 모를 수 있습니다.

유명인은 다른 모든 사람이 알고 있지만 아무도 알지 못하는 사람입니다. 유명인의 번호를 반환하고, 유명인이 없으면 -1을 반환하세요.

함수

findCelebrity(matrix: integer-2d-array) → integer
matrixinteger-2d-array
누가 누구를 아는지: i행 j열은 사람 i가 사람 j를 알고 있으면 1이다
반환값integer
유명인의 번호, 없으면 -1

제약 조건

  • 2 ≤ n ≤ 150, 여기서 n은 행과 열의 개수입니다
  • matrix[i][j]는 0 또는 1입니다.
  • matrix[i][i] = 0 모든 사람에 대해

예제

입력
matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]
출력
1
설명
1행은 모두 0이므로, 1번 사람은 아무도 모릅니다. 1열의 0행과 2행에는 1이 있으므로, 다른 두 사람 모두 1번 사람을 알고 있습니다. 1번 사람이 유명인입니다.
challenge icon

후속 질문

각 조회를 반드시 해야 하는 질문이라고 가정해 보세요. 최악의 경우 질문을 몇 개나 해야 하며, 3(n-1)보다 적게 할 수 있을까요?

코드 초기화
def findCelebrity(matrix):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

matrix = [[0, 1, 0], [0, 0, 0], [1, 1, 0]]

예상 출력

1