목록전체 글 (287)
개발자는 기록이 답이다
8. 송아지 찾기1(BFS) 예시 입력 1 5 14 예시 출력 1 3 이전에 찾았던건 무시해줍니다. 최초로 발견되는게 최단거리 입니다. 14까지 3번만에 갈 수 있다는 것입니다 5 -> 4 -> 9 -> 14 이런걸 상태 트리라고 합니다. 3레벨 탐색하니까 14번을 발견하고 루트에서 몇번만에 갔는지를 출력하면 됩니다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; // 최단 거리 구하기 public class Main { int answer = 0; // 최소 횟수 카운팅 int[] dis = {1, -1, 5}; // 앞으로 전진, 뒤로 후진, 5칸 앞으로 전진 int[] ch; // 체크 배열 : 한 번 방..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bU7Vl1/btsv5jhCBA0/kyKmKFHwTp0ZyL6h3s9Ig1/img.png)
7. 이진트리 레벨탐색(BFS : Breadth-First Search) 이진트리 순회 (넓이 우선 탐색 : 레벨 탐색) 레벨 탐색 순회 출력 : 1 2 3 4 5 6 7 레벨 순으로 탐색합니다. 상태트리로 보자면, 루트 출발점에서 한번만에 갈 수 있는 노드들(간선)을 방문해보고, 2번만에 갈 수 있는 노드들 다 방문해보고 이런걸 BFS라고 합니다. 최단 거리 탐색에서 쓰인다. import java.util.LinkedList; import java.util.Queue; class Node { int data; Node lt, rt; public Node(int val) { data = val; lt=rt=null; } } public class Main { Node root; public void BF..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/KXFog/btsvYXsGXyj/vKDAH653XRxy95mULfPeo0/img.png)
6. 부분집합 구하기(DFS) 단, 공집합은 출력하지 않습니다. 예시 입력 1 3 예시 출력 1 1 2 3 1 2 1 3 1 2 3 2 3 3은 1,2,3이 집합의 원소입니다. 부분집합은 2의 3제곱해서 8개 인데, 공집합 배니까 7개만 출력됩니다. 이진 트리로 2 갈래로 뽑는 상태 트리를 만들면 됩니다. 어떤 상태를 표현하는 트리를 상태 트리라고 합니다. {1,2,3} 집합이 있을때 원소를 뽑아내서 부분집합을 만들어 내려고 할때, 1을 넣을 수도 있고 넣지 않을 수도 있습니다. 2를 넣을 수도 있고 넣지 않을 수도 있습니다. 3을 넣을 수도 있고 넣지 않을 수도 있습니다. 숫자 하나 당 2가지 경우가 존재합니다. 이렇게 곱하면 총 8가지입니다. 원소가 n개인 집합의 개수는 2의 n제곱이다. - 공집합도..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bd7tDX/btsv7rsQJux/wk274SF2r05vj5zSF2oTuK/img.png)
5. 이진트리순회(DFS : Depth-First Search) 이진 트리 구성 이진 트리(Binary Tree)는 각 노드가 최대 두 개의 자식 노드를 가지는 계층적인 데이터 구조 데이터 검색, 정렬, 그래프 표현, 트리 순회 등 다양한 알고리즘에 활용된다. 노드 (Node): 이진 트리의 각 요소는 노드입니다. 노드는 데이터와 두 개의 자식 노드에 대한 참조(포인터)로 구성됩니다. 노드에 저장되는 데이터는 트리가 나타내는 문제나 데이터에 따라 다를 수 있습니다. 루트 노드 (Root Node): 이진 트리의 가장 상위 노드를 루트 노드라고 합니다. 모든 경로는 루트 노드에서 시작하며, 트리의 시작점입니다. 자식 노드 (Child Node): 각 노드는 최대 두 개의 자식 노드를 가질 수 있습니다. 왼..