ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/67260
[ํ์ด]
ํ์ด์ ํต์ฌ์, ํ๋ฒ ์ง๋์จ ๋ ธ๋๋ผ๋ฉด ์ดํ ์ ์๋ก ๋์์ผํ๋ ์ซ์๋ฅผ ํตํด ์ ๊น ํด์ ๊ฐ ๋๋ค๋ฉด ๋ฐฉ๋ฌธํ ์ ์๊ฒ๋ฉ๋๋ค.
๋ฐ๋ผ์ bfs()๋ฅผ ํตํด ๊ทธ๋ํ๋ฅผ ํ์ํ๋ฉฐ, visit[][]๋ฅผ ํตํด ์ง๋์จ ๋ ธ๋๋ค์ ๋ฐฉ๋ฌธ์ ์ฒดํฌํฉ๋๋ค.
๋ง์ฝ, ์ ์์กฐ๊ฑด์ด ์๊ฑฐ๋ ์ ์์กฐ๊ฑด์ ํตํด ์ ๊ธ์ด ํด์ ๋์๋ค๋ฉด ํด๋น ๋ ธ๋๋ฅผ ํ์ ๋ฃ์ผ๋ฉฐ ๊ฐ๋ฅํ ๋ ธ๋๋ค์ ๋ชจ๋ ๋ฐฉ๋ฌธํฉ๋๋ค.
์ด๋, ํ์ ๋ค์ด๊ฐ๋ ๋ ธ๋๋ค์ ArrayList<Integer> node์ ์ฝ์ ํ์ฌ bfs()๊ฐ ๋๋ํ ๋ช๊ฐ์ ๋ ธ๋๋ฅผ ์ค์ ๋ฐฉ๋ฌธํ๋์ง ๊ณ์ฐํ์ฌ ๋ชจ๋ ๋ฐฉ๋ฌธํ๋ค๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค.
[์ฝ๋]
import java.util.*;
class Solution {
static ArrayList<ArrayList<Integer>> graph = new ArrayList<ArrayList<Integer>>();
static Map<Integer, Integer> before = new HashMap<Integer,Integer>(); // ๋จผ์ ๋ฐฉ๋ฌธํด์ผํ๋ value๋ฅผ ์ ์ฅ
static Map<Integer, Integer> after = new HashMap<Integer,Integer>(); // ๋ฐฉ๋ฌธ์กฐ๊ฑด ๋ง์กฑํ๋ฉด ๋ฐฉ๋ฌธํ ์์๋๊ฑฐ ์ ์ฅ
static ArrayList<Integer> node = new ArrayList<Integer>(); // ๋ฐฉ๋ฌธํ ๋
ธ๋๋ค ์ ์ฅ
public boolean solution(int n, int[][] path, int[][] order) {
boolean answer = true;
//graph ์ด๊ธฐํ
for(int i=0;i<n;i++) {
graph.add(new ArrayList<Integer>());
}
for(int i=0;i<path.length;i++) {
graph.get(path[i][1]).add(path[i][0]);
graph.get(path[i][0]).add(path[i][1]);
}
// ์์์ map์ ์ ์ฅ
for(int i=0;i<order.length;i++) {
before.put(order[i][1], order[i][0]);
after.put(order[i][0], order[i][1]);
}
// ๊ทธ๋ํ ๋ฐฉ๋ฌธ
bfs();
// ๋ชจ๋ ๋ฐฉ๋ฌธ ๋์์ผ๋ฉด true
if(node.size() != n) {
answer = false;
}
return answer;
}
public static void bfs() {
Queue<Integer> queue = new LinkedList<Integer>();
boolean[] visit = new boolean[graph.size()];
queue.offer(0);
node.add(0);
visit[0] = true;
while(!queue.isEmpty()) {
int p = queue.poll();
for(Integer i:graph.get(p)) {
// ์ ์์กฐ๊ฑด์ด ์๊ฑฐ๋, ์ ์๊ฐ ๋ฐฉ๋ฌธ๋ ๋
ธ๋๋ค ์ถ๊ฐ
if((before.get(i) == null || visit[before.get(i)]) && !visit[i]) {
node.add(i);
queue.offer(i);
// ์ถ๊ฐ๋ ๋
ธ๋ ๋ฐฉ๋ฌธ์ ํตํด ์ ๊น์ด ํ๋ ธ๋๋ฐ, ์ด๋ฏธ ๋ฐฉ๋ฌธํ๋ ๋
ธ๋๋ค์ ์ ์์กฐ๊ฑด์ด ๋ง์กฑ๋์ด ํ์ ์ฝ์
if(after.get(i) != null && visit[after.get(i)]) {
node.add(after.get(i));
queue.offer(after.get(i));
}
}
visit[i] = true;
}
}
}
}
ใ
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (0) | 2022.07.11 |
---|---|
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์บ์ (0) | 2022.07.07 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋น๋ฐ์ง๋ (0) | 2022.07.07 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋ณด์ ์ผํ (0) | 2022.07.03 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ์ต๋ํ (0) | 2022.07.03 |
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- ๋ ์์ปฌ ํ๊ฒฝ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐฑ์ค node.js
- Baekjoon
- ๋์์ธ ํจํด
- ํ๋กํผํฐ
- ์ฝ๋ฉํ ์คํธ
- ๋ฐฑ์ค
- git
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- fp
- http
- ์๋ฐ
- ์๊ณ ๋ฆฌ์ฆ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ์ ์ญ ๋ณ์
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- JavaScript
- ๋ฐฑ์ค javascript
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- map
- ํ๋ก๊ทธ๋๋จธ์ค
- ์นด์นด์ค ์ธํด
- ํ๋กํ ์ฝ
- ์ด์์ฒด์
- ์ด๋ถํ์
- ํฌํฌ์ธํฐ
- TDD
- ๋คํธ์ํฌ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
๊ธ ๋ณด๊ดํจ