[고득점 Kit - 그래프] 가장 먼 노드

2025. 5. 24. 22:23·알고리즘
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

문제 유형

  • 다익스트라

 

문제 난이도

  • Lev 3

 

문제 분석

해당 문제는 전형적인 그래프 유형 중 다익스트라 문제이다. Queue와 dist[] 배열을 사용해서, 노드간의 최단 경로를 찾아주면 되는 기본 문제로 다른 설명은 필요 없을 것 같다.

 

전체 코드

import java.util.*;
import java.io.*;

class Solution {
    public int solution(int n, int[][] edge) {
        int answer = 0;
        
        List<Integer>[] graph = new List[n+1];
        for(int i = 0; i < n+1; i++) graph[i] = new ArrayList<>();
        
        // 그래프간의 간선 연결
        int a, b;
        for(int i = 0; i < edge.length; i++) {
            a = edge[i][0];
            b = edge[i][1];
            
            graph[a].add(b);
            graph[b].add(a);
        }
        
        int[] dist = new int[n+1];
        Arrays.fill(dist, 50001);
        
        ArrayDeque<int[]> q = new ArrayDeque<>();
        
        q.offer(new int[]{1, 0});
        dist[1] = 0;
        
        while(!q.isEmpty()) {
            
            int[] p = q.poll();
            
            for(Integer next : graph[p[0]]) {
                if(dist[next] > p[1] + 1) {
                    q.offer(new int[]{next, p[1] + 1});
                    dist[next] = p[1] + 1;
                }   
            }   
        }
        
        int max = -1;
        
        for(int i = 1; i < n+1; i++) {
            if(dist[i] > max) max = dist[i];
        }
        
        for(int i = 1; i < n + 1; i++) {
            if(dist[i] == 50001) continue;
            if(max == dist[i]) answer++;
        }
        
        return answer;
    }
}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘' 카테고리의 다른 글

역행렬 계산  (0) 2025.05.28
[프로그래머스] 서버 증설 횟수  (0) 2025.05.24
[PCCP 기출 3번] 충돌위험 찾기  (0) 2025.05.22
[PCCP 기출 2번] 퍼즐 게임 챌린지  (0) 2025.05.20
[PCCP 기출 4번] 수식 복원하기  (0) 2025.05.20
'알고리즘' 카테고리의 다른 글
  • 역행렬 계산
  • [프로그래머스] 서버 증설 횟수
  • [PCCP 기출 3번] 충돌위험 찾기
  • [PCCP 기출 2번] 퍼즐 게임 챌린지
moongi
moongi
프로그래밍 관련 공부를 정리하는 블로그
  • moongi
    By_Me
    moongi
  • 전체
    오늘
    어제
    • 공부 (96) N
      • 알고리즘 (76) N
        • 구현 (12)
        • 이분 탐색 (1)
        • 누적합 (2)
        • 다이나믹 프로그래밍 (5)
        • 위상 정렬 (2)
        • SCC (1)
        • BFS & DFS (3) N
        • 그래프 (2)
        • LCA (2)
        • 세그먼트 트리 (2)
        • 플로이드 워셜 (1)
        • 문자열 (1)
        • 수학 (1)
        • Heap (1)
        • SQL (9)
        • 개념 정리 (5)
        • 예외처리 (1)
      • spring boot (6)
        • jpa (0)
        • querydsl (0)
        • MVC pattern (0)
        • setting (2)
      • 취준 (3)
      • CS (11)
        • 대규모 시스템 설계 (2)
        • 디자인패턴 (2)
        • 데이터베이스 (4)
        • 네트워크 (3)
        • 운영체제 (0)
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
moongi
[고득점 Kit - 그래프] 가장 먼 노드
상단으로

티스토리툴바