[프로그래머스 알고리즘 고득점 Kit][그래프][Java] 가장 먼 노드

2026. 3. 7. 20:16·알고리즘 & 자료구조/문제 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/49189

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

정답 코드

문제를 대충 읽어서 최단 거리로 이동했을 때 
가장 먼 노드들의 개수를 구하는 건데
가장 먼 노드의 거리를 구했었다가 틀리고 바로 수정

 

bfs로 1번 노드에서 각 노드에 도달하기까지 지나온 최소 개수를 count배열로 저장하고
가장 많이 지나온(가장 먼) 노드를 찾기 위해 max 로 최대를 계속 업데이트해주고
마지막에 count 배열에 max와 같은 가장 멀리 떨어져 있는 노드들의 개수를 세고 반환해 준다.

import java.util.*;

class Solution {
    public int solution(int n, int[][] edge) {
        ArrayList<Integer>[] graph = new ArrayList[n+1];
        for(int i=1; i<=n; i++) {
            graph[i] = new ArrayList<>();
        }
        for(int i=0; i<edge.length; i++){
            int u = edge[i][0];
            int v = edge[i][1];
            graph[u].add(v);
            graph[v].add(u);
        }
        Queue<int[]> q = new ArrayDeque<>();
        boolean[] visited = new boolean[n+1];
        int[] count = new int[n+1];
        count[1] = 1;
        q.add(new int[] {1, 1});
        int max = 0;
        visited[1] = true;
        while(!q.isEmpty()) {
            int[] curr = q.poll();
            int currX = curr[0];
            int currD = curr[1];
            for(int next : graph[currX]) {
                if(visited[next]) continue;
                
                int dist = currD + 1;
                count[next] = dist;
                max = Math.max(dist, max);
                q.add(new int[] {next, dist});
                visited[next] = true;
            }
        }
        int answer = 0;
        for(int i=1; i<=n; i++){
            if(count[i] == max) answer++;
        }
        return answer;
    }
}

'알고리즘 & 자료구조 > 문제 풀이' 카테고리의 다른 글

[프로그래머스 알고리즘 고득점 Kit][힙(Heap)][Java] 더 맵게  (0) 2026.03.29
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 네트워크  (0) 2026.03.08
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 최소직사각형  (0) 2026.03.03
[프로그래머스 알고리즘 고득점 Kit][해시][Java] 베스트앨범  (0) 2026.03.02
[프로그래머스 알고리즘 고득점 Kit][이분탐색][Java] 입국심사  (0) 2026.02.23
'알고리즘 & 자료구조/문제 풀이' 카테고리의 다른 글
  • [프로그래머스 알고리즘 고득점 Kit][힙(Heap)][Java] 더 맵게
  • [프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 네트워크
  • [프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 최소직사각형
  • [프로그래머스 알고리즘 고득점 Kit][해시][Java] 베스트앨범
수수다
수수다
우하하
  • 수수다
    그냥살자
    수수다
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • 프로젝트 (1)
      • 알고리즘 & 자료구조 (30)
        • 내용 정리 (2)
        • 문제 풀이 (28)
      • 데이터베이스 (27)
        • 내용 정리 (1)
        • 문제 풀이 (26)
      • CS (2)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 블로그
  • 공지사항

  • 인기 글

  • 태그

    SQL
    삼성청년SW·AI아카데미
    바킹독
    date_format
    코딩테스트
    like
    bfs
    프로그래머스
    IFNULL
    매개변수탐색
    코팅테스트
    알고리즘
    이분탐색
    유니온파인드
    정렬
    HTTP 메서드
    coalesce
    Java
    Round
    분리집합
    동적계획법
    DP
    코테
    그래프
    프로그래머스 알고리즘 고득점 kit
    해시
    바이브코딩
    mysql
    AVG
    깊이/너비 우선 탐색(DFS/BFS)
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수수다
[프로그래머스 알고리즘 고득점 Kit][그래프][Java] 가장 먼 노드
상단으로

티스토리툴바