ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/67260
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr


[ํ์ด]
ํ์ด์ ํต์ฌ์, ํ๋ฒ ์ง๋์จ ๋ ธ๋๋ผ๋ฉด ์ดํ ์ ์๋ก ๋์์ผํ๋ ์ซ์๋ฅผ ํตํด ์ ๊น ํด์ ๊ฐ ๋๋ค๋ฉด ๋ฐฉ๋ฌธํ ์ ์๊ฒ๋ฉ๋๋ค.
๋ฐ๋ผ์ 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
- ํฌํฌ์ธํฐ
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ํ๋ก๊ทธ๋๋จธ์ค
- JavaScript
- Baekjoon
- http
- ์ด๋ถํ์
- ์ฝ๋ฉํ ์คํธ
- ์นด์นด์ค ์ธํด
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ
- ํ๋กํผํฐ
- TDD
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ๋คํธ์ํฌ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- fp
- ํ๋กํ ์ฝ
- ๋์์ธ ํจํด
- ๋ ์์ปฌ ํ๊ฒฝ
- ์ ์ญ ๋ณ์
- ๋ฐฑ์ค node.js
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ์คํฌ๋ฆฝํธ
- map
- ๋ฐฑ์ค javascript
- git
- ์ด์์ฒด์
- ๋ฐฑ์ค
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |