프로그래머스 코딩테스트 연습/Level3

[프로그래머스][JAVA] 가장 먼 노드

긷뚜 2021. 5. 5. 12:34
728x90

programmers.co.kr/learn/courses/30/lessons/49189

 

코딩테스트 연습 - 가장 먼 노드

6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3

programmers.co.kr

 

전형적인 bfs 문제 같았다

import java.util.*;

class Solution {

    public int solution(int n, int[][] edge) {
        int answer = 0;
        int maxValue = 0;
        int[] nodeLength = new int[n+1];
        boolean[][] adj = new boolean [n+1][n+1];
        for(int i =0;i<edge.length;i++){
            adj[edge[i][0]][edge[i][1]]=true;
            adj[edge[i][1]][edge[i][0]]=true;
        }
        Queue<Integer> queue = new LinkedList<>();
        queue.add(1);
        while(!queue.isEmpty()){
            int temp = queue.poll();
            for(int i =2;i<=n;i++){
                if(adj[temp][i]&&nodeLength[i]==0){
                    nodeLength[i] = nodeLength[temp]+1;
                    queue.add(i);
                }
            }
        }

      
        
        for(int i =1;i<=n;i++){
            //System.out.println(nodeLength[i]);
            if(nodeLength[i]>maxValue){
                maxValue = nodeLength[i];
            }
        }
        
        for(int i =1;i<n+1;i++){
            if(maxValue==nodeLength[i]){answer++;}
        }
        return answer;
    }
   
}
728x90