분류 전체보기
-
[Java실습] 하노이 탑Java/Java 실습 2022. 7. 24. 19:08
하노이 탑은 n개의 원반을 start(A)부터 via(B)를 통해, end(C)까지 옮기는 알고리즘입니다. 하노이 탑에 대한 코드입니다. import java.util.ArrayList; import java.util.Scanner; public class TowerOfHanoi { public static int count = 0; public static ArrayList arraylist = new ArrayList(); public static void hanoi(int n, int start, int end, int via) { if(n == 1) {// 이동할 원반의 수가 1개 count++; arraylist.add(start + " " + end);// 시작 -> 목표 } else { ha..
-
[Java 실습] 셸 정렬(Shell Sort)Java/Java 실습 2022. 7. 18. 16:38
셸 정렬은 단순 삽입 정렬의 장점을 살리고, 단점을 보완하여 좀 더 빠르게 정렬하는 알고리즘입니다. 다음은 셸 정렬을 오름차순으로 정렬한 코드입니다. 마지막 1-정렬은 삽입 정렬과 다르지 않습니다. public class shellSort { static void shellSort(int[] arr) { // 4-정렬, 2-정렬, 1-정렬 범위를 정해줌 // 마지막 1-정렬은 삽입 정렬(insertion sort)과 같음 for(int i=arr.length/2; i>0; i/=2) { for(int j=i; j=0 && arr[k]>temp; k-=i) { arr[k+i] = arr[k]; } arr[k+i] = temp; } } } public static void main(String[] args)..
-
[Java 실습] 단순 삽입 정렬(Straight Insertion Sort)Java/Java 실습 2022. 7. 18. 14:40
단순 삽입 정렬은 선택한 요소를 더 앞의 알맞은 위치에 삽입하는 작업을 반복하여 정렬하는 알고리즘입니다. 단순 삽입 정렬을 오름차순으로 정렬한 코드입니다. public class InsertionSort { static void insertionSort(int[] a) { for(int i = 1; i < a.length; i++) { // 두 번째부터 비교 for(int j = 0; j < i; j++) { if(a[i] < a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } } public static void main(String[] args) { int [] arr = new int[] {8,2,4,5,7,9}; insertionSort(arr);..
-
[Java 실습] 버블 정렬(Bubble Sort)Java/Java 실습 2022. 7. 18. 13:29
버블 정렬은 이웃한 두 요소의 대소 관계를 비교하고 필요에 따라 교환을 반복하는 알고리즘입니다. 다음은 버블 정렬을 내림차순으로 정렬한 코드입니다. public class BubbleSort { static void swap(int[] a, int i1, int i2) { int n = a[i1]; a[i1] = a[i2]; a[i2] = n; } static void bubbleSort(int [] a) { for(int i=0; i
-
[Java] 제어문(선택 제어문 / 반복 제어문), 제어 키워드Java/Java 개념 2022. 7. 15. 23:49
제어문이란? 선택 제어문(if, switch) 반복 제어문(for, while, do-while) 제어 키워드(break, continue) 1. 제어문이란? 제어문과 제어 키워드를 이용하면, 프로그램의 실행 순서를 다양한 방법으로 제어할 수 있게 된다. 한마디로, 제어문은 '프로그램 처리 순서를 바꾸는 것' 이라고 생각하면 된다. 제어문은 2개의 선택 제어문(if, switch), 3개의 반복 제어문(for, while, do-while), 2개의 제어키워드(break, continue)가 있다. 2. 선택 제어문(if) 2-1. if 단일 구문 if(조건식) {// 조건식은 boolean 타입 실행 구문;// 조건식이 true일 때 실행 } 조건식이 true일 때, 실행 구문을 실행하고, false이..
-
[Java 실습] BFS(너비 우선 탐색) 미로 탐색(큐)Java/Java 실습 2022. 7. 15. 21:24
map : 길 = 0, 갈수 없는 길(벽) = 1 visited 배열을 통해 들렸던 길은 다시 들리지 않는다. (boolean으로 판단) 현재 인덱스를 저장하는 Index 클래스를 매개변수로 받아 Way() 메서드를 통해 상하좌우를 검색하고 그 값을 offer한다. offer한 인덱스를 poll하고, 위치를 변경한다. 언제까지? 탈출 (4,4) 할때까지. import java.util.LinkedList; import java.util.Queue; public class BfsQueue { // 인덱스를 저장해주는 큐 static Queue qQueue = new LinkedList(); // 들린 곳을 체크해줌 static boolean [][] visited = new boolean[5][5]; //..
-
[Java 실습] DFS(깊이 우선 탐색) 미로 탐색(스택)Java/Java 실습 2022. 7. 15. 21:03
map : 길 = 0, 갈수 없는 길(벽) = 1 visited 배열을 통해 들렸던 길은 다시 들리지 않는다. (boolean으로 판단) 현재 인덱스를 저장하는 Index 클래스를 매개변수로 받아 Way() 메서드를 통해 상하좌우를 검색하고 그 값을 push한다. push한 인덱스를 pop하고, 위치를 변경한다. 언제까지? 탈출 (4,4) 할때까지. import java.util.Stack; public class DfsStack { // 인덱스를 저장해주는 스택 static Stack sStack = new Stack(); // 들린 곳을 체크해줌 static boolean [][] visited = new boolean[5][5]; // 길=0, 벽=1 static int[][] map = { {0,..