Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 점수계산
- 알고리즘
- 임시반장 정하기
- 격자판
- 보이는 학생
- 연속부분수열
- 최대 길이
- 공통원소 구하기
- 배열
- 뒤집은 소수
- 모든행과열대각선의합
- 백준
- 10991
- 코테준비
- 큰 수 출력하기
- 가장 짧은 문자거리
- 등수구하기
- array
- 두 배열 합치기
- 인프런
- 투 포인터
- 자바
- 아스키코드
- ArrayList
- GitHub #Commit #BaekJoon
- java
- Two Pointer
- 누적 계산
- Pointer
- 10992
Archives
- Today
- Total
ezhoon
[인프런] 07_14 그래프 최단거리(BFS) 본문
[Java] 인프런 문제풀이/Recursive, Tree, Graph(DFS, BFS 기초)
[인프런] 07_14 그래프 최단거리(BFS)
ezhoon 2022. 2. 17. 18:11📖 문제
- 다음 그래프에서 1번 정점에서 각 정점으로 가는 최소 이동 간선수를 출력하세요.
-
1번 정점에서 각 정점으로 가는 최소 간선수를 2번 정점부터 차례대로 출력하세요.
-
첫째 줄에는 정점의 수 N(1<=N<=20)와 간선의 수 M가 주어진다. 그 다음부터 M줄에 걸쳐 연 결정보가 주어진다.
그래프 예시 출력
-
⚠️ 주의사항
- 원래 갔던 곳으로 다시 돌아가지 않게 체크용 배열 추가
- 이중 리스트
✍️ 이해
**
* 1. 07_13과 같은 방법으로 queue 생성, 체크를 위한 배열 말고도 최단거리 배열 추가
* 2. Queue 현재 값 추가
* 3. Queue 빈 값이 될 때까지 반복
* 3-1. Queue 현재 지점 빼와서 그 지점의 list를 체크배열에서 확인 (for-each 사용)
*/
✏️ 풀이
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static int N, M;
static ArrayList<ArrayList<Integer>> graph;
static int[] ch, dis; // 체크, 최소거리 배열
public void BFS(int v) {
Queue<Integer> queue = new LinkedList<>();
ch[v] = 1;
dis[v] = 0;
queue.offer(v);
while (!queue.isEmpty()) {
int currentNum = queue.poll(); // 현재 지점
for (int nv : graph.get(currentNum)) {
if (ch[nv] == 0) {
ch[nv] = 1;
queue.offer(nv);
dis[nv] = dis[currentNum] + 1;
}
}
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
graph = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i <= N; i++) graph.add(new ArrayList<Integer>());
ch = new int[N + 1];
dis = new int[N + 1];
for (int i = 0; i < M; i++) {
int A = sc.nextInt();
int B = sc.nextInt();
graph.get(A).add(B);
}
T.BFS(1);
for (int i = 2; i <= N; i++) {
System.out.println(i + " : " + dis[i]);
}
}
}
'[Java] 인프런 문제풀이 > Recursive, Tree, Graph(DFS, BFS 기초)' 카테고리의 다른 글
[인프런] 07_12 경로 탐색(인접행렬) 07_13 경로탐색(인접리스트) (0) | 2022.02.17 |
---|---|
[인프런] 07_11 그래프와 인접행렬 (0) | 2022.02.17 |
[인프런] 07_09 ~ 10 Tree 말단노드까지의 가장 짧은 경로 (DFS, BFS) (0) | 2022.02.16 |
[인프런] 07_08 송아지 찾기 (BFS : 상대트리탐색) (0) | 2022.02.15 |
[인프런] 07_07 이진트리 레벨탐색 (0) | 2022.02.14 |
Comments