Notice
Recent Posts
Recent Comments
Link
05-01 16:22
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- route 53
- springboot
- 리눅스
- K-디지털트레이닝
- spring
- AWS
- 맥
- 우리FIS아카데미
- 클라우드 서비스 개발
- dbeaver
- 클라우드 서비스 개발 #
- 로드밸런스
- 우리FISA
- mysql
- https
- 우리에프아이에스 #
- M2
- 맥북
- 도메인
- 글로벌소프트웨어캠퍼스
- sts
- 우리FISA #
- 우리에프아이에스
- jdk
- Java
- 우리FIS아카데미 #
- Gradle
- HTTP
- 맥OS
Archives
- Today
- Total
<<개발일지>>
[BFS] 10. 말단노드까지의 가장 짧은 경로 본문
<<풀이>>
-나의 풀이-
원래 최단 거리는 BFS로 푸는 것이 정석이다.
그렇기 이번에는 BFS를 활용해서 풀었다. while 문과 Queue를 활용해서 풀었다.
그렇게 해서 문제를 맞췄는데 !!!
내가 실수 한 것이 있었다.
그건 바로 말단 노드의 오개념이었다.
나는 말단 노드를 하나만 null이면 끊겼다고 착각했다.
하지만 하나만 null이라도 null 아닌 쪽으로 말단 노드는 더 아래로 갈 수 있는 것이다 ㅋㅋ
import java.util.LinkedList;
import java.util.Queue;
class Node {
int data;
Node lt ,rt;
Node(int val) {
data = val;
lt = rt = null;
}
}
class Main {
Node root;
private int BFS(Node root) {
Queue<Node> Q = new LinkedList<>();
Q.offer(root);
int L = 0;
while(!Q.isEmpty()) {
int size = Q.size();
for (int i = 0; i < size; i++) {
Node n = Q.poll();
if (n.lt == null || n.rt == null) return L;
else {
Q.offer(n.lt);
Q.offer(n.rt);
}
}
L++;
}
return 0;
}
public static void main(String[] args){
Main T = new Main();
T.root = new Node(1);
T.root.lt = new Node(2);
T.root.rt = new Node(3);
T.root.lt.lt = new Node(4);
T.root.lt.rt = new Node(5);
System.out.println(T.BFS(T.root));
}
}
그래서 수정한 것이 강사님 코드이다.
-강사님 풀이-
or => and 로 바꿔준 형태이다.
정답이라서 자칫 넘어가 다음에도 생길 문제를 오늘 잡아서 다행이라고 생각한다 ㅎㅎ
import java.util.LinkedList;
import java.util.Queue;
class Node {
int data;
Node lt ,rt;
Node(int val) {
data = val;
lt = rt = null;
}
}
class Main {
Node root;
private int BFS(Node root) {
Queue<Node> Q = new LinkedList<>();
Q.offer(root);
int L = 0;
while(!Q.isEmpty()) {
int size = Q.size();
for (int i = 0; i < size; i++) {
Node n = Q.poll();
if (n.lt == null && n.rt == null) return L;
else {
if(n.lt != null) Q.offer(n.lt);
if(n.rt != null) Q.offer(n.rt);
}
}
L++;
}
return 0;
}
public static void main(String[] args){
Main T = new Main();
T.root = new Node(1);
T.root.lt = new Node(2);
T.root.rt = new Node(3);
T.root.lt.lt = new Node(4);
T.root.lt.rt = new Node(5);
System.out.println(T.BFS(T.root));
}
}
'코딩테스트' 카테고리의 다른 글
[DFS] 13. 경로탐색(인접리스트, ArrayList) (2) | 2024.02.10 |
---|---|
[DFS] 12. 경로탐색 (1) | 2024.02.08 |
[DFS] 9. Tree 말단노드까지의 가장 짧은 경로 (0) | 2024.02.04 |
[BFS] 8. 송아지 찾기 (0) | 2024.02.04 |
[BFS] 7. 이진트리 레벨탐색 (0) | 2024.02.02 |