목록강의 (57)
개발자는 기록이 답이다

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..

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제곱이다. - 공집합도..

4. . 피보나치 재귀(메모이제이션) 예시 입력 1 10 예시 출력 1 1 1 2 3 5 8 13 21 34 55 피보나치 수열은 2가지 방법으로 풀 수 있습니다. 1. 배열로 for문 사용 2. 재귀로 풀기 둘중에 어떤게 성능이 더 좋은가? 당연히 1번이다. 재귀는 함수가 하나 호출될때마다 스택 프레임이 생겨서 메모리 낭비도 많이 되고 무거워서 성능이 더 안좋다. for문은 함수 하나를 만들었을 경우 스텍 프레임 하나만 가지고 돌기 때문에 그 안에서 지역변수, 배열만들어서 도는 것이다. 특정 항의 값을 리턴해주는 방법(피보나치 수열의 n번째 항만 리턴) 1. n은 몇번째 항인지를 의미한다. 2. 첫번째항과 두번째 항은 1을 리턴한다 3. 3번째 항부터 앞에 있는 2개 항을 더해준다. public cla..

3. 팩토리얼 예시 입력 1 5 예시 출력 1 120 내가 푼 풀이 public class Main { int answer = 1; public int DFS(int n) { if(n == 0) return 0; else { answer *= n; DFS(n - 1); } return answer; } public static void main(String[] args) { Main T = new Main(); System.out.println(T.DFS(5)); } } 강의 풀이 public class Answer { public int DFS(int n) { if (n == 1) return 1; else return n*DFS(n-1); } public static void main(String[]..