하루에 한 문제
[프로그래머스] 가장 먼 노드 -Java 본문
https://programmers.co.kr/learn/courses/30/lessons/49189
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
class Solution {
int answer;
public int solution(int n, int[][] edge) {
answer=0;
List<Integer> list[]=new List[n+1];
for(int i=0; i<=n; i++) list[i]=new ArrayList<>();
for(int i=0; i<edge.length; i++) {
list[edge[i][0]].add(edge[i][1]);
list[edge[i][1]].add(edge[i][0]);
}
boolean [] visited= new boolean[n+1];
bfs(list,visited);
return answer;
}
private void bfs(List<Integer>[] list, boolean[] visited) {
Queue<Integer> queue=new LinkedList<Integer>();
visited[1]=true;
queue.offer(1);
while(true) {
int size=queue.size();
if(size==0) return;
answer=0;
for(int i=0; i<size; i++) {
int vertex=queue.poll();
answer++;
for(int j=0; j<list[vertex].size(); j++) {
int end=list[vertex].get(j);
if(!visited[end]) {
queue.offer(end);
visited[end]=true;
}
}
}
}
}
}
소요시간 : 20분
전형적인 BFS문제였습니다.
각 간선의 연결정보를 저장하기 위해 LIST를 2차원배열로 선언하였습니다.
양방향이기 때문에 1-3 이면 1->3, 3->1 을 모두 저장해주었습니다.
그리고 그 다음에는 그냥 BFS돌렸습니다..
Level 3문제 치고는 엄청엄청 쉬운편이라고 생각합니다!!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 2019 카카오 개발자 겨울 인턴십] 징검다리 건너기 -Java (0) | 2020.12.22 |
---|---|
[프로그래머스 2019 KAKAO BLIND RECRUITMENT] 후보키 -Java (0) | 2020.12.22 |
[프로그래머스] N-Queen -Java (0) | 2020.12.21 |
[프로그래머스] 다음 큰 숫자 -Java (0) | 2020.12.18 |
[프로그래머스] 섬 연결하기 -Java (1) | 2020.12.18 |
Comments