Coding Test Study/Programmers

마을 판사 찾기

똑똑한망치 2024. 7. 31. 10:12
728x90
반응형

문제

마을에 1부터 N의 고유 번호를 가진 사람들이 있다. 소문으로는 마을 사람 중에 마을 판사가 있다고 한다. 마을 판사가 실제로 존재한다면,

  • 마을 판사는 아무도 믿지 않는다.
  • 다른 모든 사람들은 마을 판사를 믿는다.
  • 마을 판사가 있다면 오직 한명 뿐이다.

2차원 배열 trust가 주어졌을 때, trust[i] = {a, b}는 고유 번호가 a인 사람이 고유 번호가 b인 사람을 믿는다는 것을 의미한다고 한다.

마을 판사가 존재한다면 마을 판사의 고유 번호를, 존재하지 않는다면 -1을 출력하는 프로그램을 작성하시오.

(단, a가 b를 믿고 b가 c를 믿는다고 할 때, a가 c를 믿는다는 의미는 아니다.)

입력설명

  • 2 < N <= 10000
  • 0 <= trust.length <= 10000

출력설명

마을 판사의 고유 번호를 정수로 반환

매개변수 형식

  • N = 3
  • trust = {{1, 3}, {2, 3}}

반환값 형식

3

 

 

 

풀이 방법

1부터 N까지 사람 중 trust 배열에서 a 집합에는 한번도 나오지 않고, b 집합에서는 판사번호만 (N-1)번 나와야한다.

 

import java.util.*;

class Solution {
    public int solution(int N, int[][] trust) {
        if (trust.length == 0) {
            return -1;
        }
        for (int i = 1; i <= N; i++) {
            int finalI = i;
            if (Arrays.stream(trust).noneMatch(x -> x[0] == finalI)
                    &&
                    Arrays.stream(trust).filter(x -> x[1] == finalI).count() == (N - 1)
            ) {
                return finalI;
            }
        }
        return -1;
    }
}

 

반응형

'Coding Test Study > Programmers' 카테고리의 다른 글

잡기 놀이  (0) 2024.08.02
아메바 분열  (0) 2024.08.01
[Java] 난이도 - 중 / DP 문제  (0) 2024.03.22
[Java] k 자리 제거하기  (0) 2024.03.22
[Java] 선을 넘나드는 사각형  (1) 2024.03.22