자바 15

Java로 BFS 구현하기

Ex) package first; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class BFSpractice0 { static int MAX_COUNT = 101; static int [][] AdjMatrix = new int [MAX_COUNT][MAX_COUNT]; static int[] VisitMatrix = new int[MAX_COUNT]; static int VertaxCount, EdgeCount; static Queue queue = new LinkedList(); public static void main(String[] args) { int StartV = 1; Scanne..

Chapter 08. DFS, BFS 활용

1. 합이 같은 부분집합 import java.util.*; public class Main { static String answer = "NO"; static int n, total = 0; boolean flag = false; public void DFS(int L, int sum, int [] arr){ if(flag == true) return;//재귀가 바로 끝나도록한다. if(sum > total / 2) return;// 확인할 필요가 없다. if(L == n){ if((total - sum) == sum){ answer = "YES"; flag = true; } } else{ DFS(L + 1, sum + arr[L], arr); // 무조건 + 1, arr[L]을 sum에 누적 DFS(..

Chapter 07. Recursive, Tree, Graph (DFS, BFS 기초)

1. 재귀함수 (스택 프레임) public class Main { public void DFS(int n){ if(n == 0) return; else{ System.out.println(n); DFS(n-1); } } public static void main(String[] args){ Main T = new Main(); T.DFS(5); return ; } } Note) - 실행 결과: 5 4 3 2 1 츨력 2. 이진수 출력 (재귀) import java.util.Scanner; public class Main { public void DFS(int n){ if(n == 0) return; else{ System.out.print(n + " "); DFS(n / 2); } } public sta..

Chapter 02. Array (1, 2차원 배열)

1. 큰 수 출력하기 import java.util.*; public class Main { public static void main(String[] args){ Main T = new Main(); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; ++i){ arr[i] = scan.nextInt(); } for(int x : T.solution(n, arr)){ System.out.print(x + " "); } } public ArrayList solution(int n, int[] arr) { ArrayList answer = new ArrayList(..

Chapter 01. String (문자열)

2. 대소문자 변환 import java.util.Scanner; public class Change { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str = scan.next(); System.out.println(solution(str)); } public static String solution(String str) { String answer = ""; for( char x : str.toCharArray()) { if ( Character.isLowerCase(x) ) { answer += Character.toUpperCase(x); }else { answer += Character..

트리, 이진 탐색 트리, 레드-블랙 트리

1. 트리 - 널리 이용되는 자료구조 중 하나 - 나무의 "계층적" 구조를 표현한다. Def) 노트(node): 실제로 저장하는 데이터 Def) 루트(root): 최상위에 위치한 데이터 Def) 리프(leaf): 마지막에 위치한 데이터들 - 부모와 자식 관계(부모는 언제나 하나, 자식은 없거나 여러개 가능) - 높이: 어떤 노드->리프 경로의 최대 길이 -> 부모 기준으로 아래 3개 있으면 높이가 3 - 깊이: 어떤 노드->루트 경로의 길이 -> 자식기준으로 위에 3개 있으면 깊이가 3 - 하위 트리(subtree): 어떤 노드 아래의 모든 것을 포함하는 트리 2. 트리의 용도 - 계층적 데이터를 표현 - 검색트리를 통해 검색 알고리즘 구현 가능 Ex) 트리의 저장법 public class Node{ p..

Code up 1929 재귀함수 우박수 (3n+1) (reverse)

Ex) 우박수 문제 역순으로 출력하기 import java.util.Scanner; public class ReverseCollatz { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int m = scan.nextInt(); Reverse(m); System.out.println(m); } public static void Reverse(int n) { if( n % 2 == 1 ) {//홀수일 때 if(n == 1) return; n = 3 * n + 1; Reverse(n); }else {// 짝수일 때 n = n / 2; Reverse(n); } System.out.println(n); } } Note..

Code up 3117 0은 빼!

Ex) 정수k가 입력되고 k줄만큼 숫자들이 입력된다. 마지막에 남은 숫자들의 합을 출력한다. - stack을 이용하여 양수가 입력되면 push(), 0이 입력되면 pop() import java.util.Scanner; interface IStackableZero{ boolean empty(); void pop(); void push(int nData); int peek(); void print(); } public class MinusZero implements IStackableZero{ private int[] mnArray; private int mnTop; private int mnCapacity; public MinusZero(int nCapacity) { mnArray = new int[nC..