본문 바로가기

Algorithm

(171)
[Summer/Winter Coding(2019)][시뮬레이션] 종이접기 - Java 문제 바로가기 코딩테스트 연습 - 종이접기 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽�� programmers.co.kr 규칙을 찾아서 풀었씀니다. class Solution { public int[] solution(int n) { if (n == 1) { int[] ret = { 0 }; return ret; } int[] b = solution(n - 1); int[] a = new int[b.length * 2 + 1]; System.arraycopy(b, 0, a, 0, b.length); a[b.length] = 0; int[] c = new ..
정렬(Sorting) 선택정렬(Selection Sort) 버블 정렬(Bubble Sort) 삽입 정렬(Insertion Sort) 합병 정렬(Merge Sort) 퀵 정렬(Quick Sort) 참고 In-Place 알고리즘: 입력 배열 이외의 추가적인 메모리가 필요없는 알고리즘 On/Off-line 알고리즘: 정렬 중 추가로 데이터가 들어올 수 있/없는 알고리즘 Stable Sort: 중복된 키를 순서대로 정렬하는 정렬 알고리즘 1.선택 정렬(Selection Sort) Time Complexity - Best O(n2) - Avg O(n2) - Worst O(n2) In-Place Algorithm Off-line Algorithm Unstable Sort 주어진 배열에서 최소값을 찾아서 앞으로 갖다 놓는 알고리즘. 배열..
유클리드 호제법(Euclidean Algorithm) "경북대학교 이시형 교수님의 수업을 듣고 작성했습니다." 학교에서 고급 문제 해결을 듣다가 새삼 매우 파워풀한 최대공약수 찾는 방법이라서 글을 쓴다 유클리드 호제법이란? 유클리드 호제법(-互除法, Euclidean algorithm) 또는유클리드 알고리즘은 2개의자연수또는 정식(整式)의최대공약수를 구하는알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되..