Study/알고리즘
-
에라토스테네스의 체 ( 소수 판별)Study/알고리즘 2019. 2. 22. 17:11
음... 알고리즘 하다가 제일 슬플 때는 알고리즘이 틀렸을 때? 아니다. 수학적 사고가 부족해서 도저히 어떻게 풀어야 할지 감도 안 올 경우이다.. ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 에라토스테네스의 체 알고리즘은 굉장히 유명한 소수 판별법이다. 1. 소수란? 약수로 1과 자기 자신만 갖고 있는 수. ( 0과 1은 소수가 아니다)2 = { 1, 2}3 = { 1, 3}4 = { 1, 2, 4} 4는 소수가 아니다.5 = { 1, 5} 2. 에라토스테네스의 체 모든 자연수는 소수들의 곱으로 표현이 가능하다.그래서 소수가 아닌 수들은 어떤 소수의 배수이다. 위에서 처럼 4는 소수가 아니다. 소수인 2의 배수이기 때문이다. 이를 이용하여 체로 소수를 걸러보자. 1) boolean 자료형의 flag 배열을 만들..
-
스택 구현하기 (Stack)Study/알고리즘 2019. 2. 21. 18:07
스택... 이론은 아주 빠삭한 자료구조라고 생각했는데, 구현 하려니깐 내가 이론이 참 얕다는것을 깨달았다. 1. Stack이란? 쌓는다. 말그대로 박스가 쌓여 있는 모습같은 데이터 구조.먼저 들어간 데이터가 마지막에 꺼내지기 때문에 LIFO (Last In First Out) 구조라고 한다. 2. 구현 할 4가지 기능 pop() : 스택의 top 노드를 꺼낸다. 만약 스택이 비어있으면, EmptyStackException을 날린다.push() : 스택에 데이터를 집어 넣는다. 만약 스택의 사이즈보다 데이터를 더 집어 넣으면, StackOverFlowError() 를 날린다.peek() : 스택의 top노드의 데이터를 알려준다.isEmpty() : 스택이 비어있는지 확인한다. 3. 구현 1234567891..
-
퀵소트 (Quick Sort)Study/알고리즘 2019. 2. 19. 14:28
손코딩 단골 두번째 퀵소트를 공부해야한다.pivot과 비교해서 얠 기준으로 왼쪽은 작은 값, 오른쪽은 큰 값으로 정렬한다.평균 시간 복잡도는 O(n log n) 이다. 정렬 되지 않은 배열 3, 9, 4, 7, 5, 0, 1, 6, 8, 2 로 정렬을 해봅시다. 1. pivot을 정한다. 보통 배열의 가운데 값을 선택한다. pivot = 5; 2. 배열의 왼쪽과 오른쪽 끝의 인덱스를 start, end로 둔다. start = 0, end = arr.lenth -1; 3. start 인덱스의 배열 값이 pivot보다 작으면 다음 인덱스로 넘어간다. arr[start] = 3 , pivot = 5, start++; 4. start 인덱스의 배열값이 pivot 보다 크면 멈춘다. arr[start] = 9, ..
-
피보나치 수열Study/알고리즘 2019. 2. 17. 20:49
면접 중 손코딩 단골 피보나치 수열 피보나치 수열은 a1=1, a2=1, an+2=an+1+an (n=1, 2, 3, ⋯) 라는 규칙을 갖는다. 1 1 2 3 5 8 13 21 34 55 … 이 수열을 재귀, 메모이제이션, 반복문으로 나타내보자 피보나치 수열을 푸는 방법 1 - 재귀 public static void main(String[] args) {// TODO Auto-generated method stubint input = 8;for (int i = 1; i