본문 바로가기
Algorithm/BOJ

[BOJ 1058] 친구 (JAVA)

by 우롱추출물 2021. 9. 14.

[문제링크]

 

1058번: 친구

지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람

www.acmicpc.net

 

[실수한 부분(주석처리)]

- 두개의 노드가 관계없을 때 0으로 잘못 처리했었음 (INF로 변경)

- 자기자신의 경우도 친구로 카운트를 했었음 (자기자신은 건너뛰도록 변경)

 

[기본 로직 OR IDEA]


[코드]

import java.util.*;

public class Main {
    static int[][] arr;
    final static int INF = Integer.MAX_VALUE / 2;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        arr = new int[N][N];

        for(int i = 0; i < N; i++){
            char[] YN = sc.next().toCharArray();
            for(int j = 0; j < YN.length; j++){
                if(YN[j]=='Y'){
                    arr[i][j] = 1;
                }else if(YN[j] == 'N'){
                    arr[i][j] = INF;
                }
            }
        }

        for(int k = 0; k < N; k++){
            for(int i = 0; i < N; i++){
                for(int j = 0; j < N; j++){
                    arr[i][j] = Math.min(arr[i][k] + arr[k][j], arr[i][j]);
                }
            }
        }

        int maxCnt = 0;
        for(int i = 0; i < N; i++){
            int cnt = 0;
            for(int j = 0; j < N; j++){
                if(i == j) continue;
                if(0 < arr[i][j] && arr[i][j] <= 2){
                    cnt++;
                }
            }
            maxCnt = Math.max(cnt, maxCnt);
        }


        System.out.println(maxCnt);
    }
}

 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ 7562] 나이트의 이동 (JAVA)  (0) 2021.09.14
[BOJ 1011] Fly me to the Alpha Centauri  (0) 2021.09.13