Tags
- ๊น์ด ์ฐ์ ํ์
- ๊ทธ๋ํ ์ด๋ก
- ๋ฌธ์์ด
- greedy
- ๊ทธ๋ํ ํ์
- PGM
- BFS
- ๊ตฌํ
- BOJ
- ์๋ฎฌ๋ ์ด์
- ์๋ฃ๊ตฌ์กฐ
- sort
- ๊ต์ฌ
- Study
- Dynamic Programming
- queue
- SpringBoot
- ๋๋น ์ฐ์ ํ์
- dfs
- Python
- DP
- ์ ๋ ฌ
- ๋ฐฑํธ๋ํน
- ์ํ
- Java
- stack
- ์ ์๋ก
- Brute Force Algorithm
- CodingTest
- LV2
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2644 : ์ด์๊ณ์ฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ๋ ธ๋ ์ n, ์์ ๋ ธ๋, ๋ ๋ ธ๋, ๊ฐ์ ์ ์ m๊ณผ m๊ฐ์ ๊ฐ์ ์ ๋ณด๊ฐ ์ ๋ ฅ๋๋ค.
- ์์ ๋
ธ๋๋ถํฐ ๋ ๋
ธ๋ ๊น์ง ๋ช ๊ฐ์ ๊ฐ์ ์ผ๋ก ๊ฐ ์ ์๋์ง ์ถ๋ ฅํ๋ค.
- ์ฐ๊ฒฐ๋์ด์์ง ์์ผ๋ฉด -1์ ์ถ๋ ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
ArrayList<Integer> arr[] = new ArrayList[n + 1];
for (int i = 1; i <= n; i++) {
arr[i] = new ArrayList<>();
}
int h1 = sc.nextInt();
int h2 = sc.nextInt();
int m = sc.nextInt();
for (int i = 0; i < m; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
if (!arr[x].contains(y)) {
arr[x].add(y);
arr[y].add(x);
}
}
System.out.println(bfs(arr, h1, h2));
}
private static int bfs(ArrayList<Integer>[] arr, int h1, int h2) {
boolean[] visit = new boolean[arr.length + 1];
Stack<Person> stack = new Stack<>();
stack.push(new Person(h1, 0));
while (!stack.isEmpty()) {
Person p = stack.pop();
if (!visit[p.idx]) {
if (p.idx == h2) {
return p.count;
}
visit[p.idx] = true;
for (int i = 0; i < arr[p.idx].size(); i++) {
stack.push(new Person(arr[p.idx].get(i), p.count + 1));
}
}
}
return -1;
}
private static class Person {
int idx;
int count;
Person(int idx, int count) {
this.idx = idx;
this.count = count;
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋ ธ๋ ์ ๋ณด์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ ๋ฐ๊ณ BFS๋ก ํ์ํ๋ค.
- Person ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ธ๋ฑ์ค์ ํ์ฌ๊น์ง์ ๊ฐ์ ์๋ฅผ ์ ์ฅํ๋ค.
- bfs๋ฉ์๋์์ ํ์์ ์ํํ๊ณ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
- ๋ ธ๋ ๋ฐฉ๋ฌธ์ ํ์ธํ boolean ๋ฐฐ์ด visit๊ณผ bfs๋ฅผ ์ํ Person ์คํ stack์ ์ ์ธํ๋ค.
- ์์ ๋ ธ๋์ ์ธ๋ฑ์ค h1์ ์คํ์ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ฃ๋๋ค.
- ์คํ์ด ๋น ๋๊น์ง ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ์คํ์์ ๊ฐ์ pop
- ๋ฐฉ๋ฌธํ์ ์ด ์๋ ๋ ธ๋๋ฉด, ๋ ๋ ธ๋์ธ์ง ํ์ธ
- ๋๋ ธ๋๊ฐ ์๋๋ฉด visit์ true๋ก ๋ฐ๊พธ๊ณ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋ ธ๋๋ฅผ ์คํ์ ์ฝ์
๐ธ end ๐ธ
- dfs๋ก ํ๋ ค๋ค๊ฐ bfs๊ฐ ๋ ๊น๋ํ ๊ฒ ๊ฐ์ ์ ํฅํ์๋ค.
- dfs๋ ์ฐ์ตํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํ์ด์ผ๊ฒ ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_11053 : ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2023.01.29 |
---|---|
BOJ_2667 : ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2023.01.26 |
BOJ_2596 : ๋น๋ฐํธ์ง (0) | 2023.01.25 |
BOJ_9372 : ์๊ทผ์ด์ ์ฌํ (0) | 2023.01.24 |
BOJ_11724 : ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2023.01.23 |