[문제링크]
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 |