본문 바로가기

프로그래밍 연구/알고리즘5

[알고리즘 독학] 재귀 알고리즘(1) 재귀의 기본 재귀의 기본 재귀적 : 어떤 사건이 자기 자신을 포함하고 다시 자가 자신을 사용하여 정의될 때 팩토리얼 구하기 1. 0! = 1 2. n > 0이면 n! = n × (n-1)! package search; import java.util.Scanner; public class Factorial { static int factorial(int n) { if(n > 0) { return n * factorial(n-1); } else { return 1; } } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.print("정수를 입력하세요 : "); int x = stdIn.nextInt(); .. 2022. 4. 11.
[알고리즘 독학] 큐(Queue) 큐 스택과 마찬가지로 데이터를 일시적으로 쌓아 놓은 자료구조 but 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출인 점이 스택과 다름 인큐 : 데이터를 넣는 작업 디큐 : 데이터를 꺼내는 작업 프런트(front) : 데이터를 꺼내는 쪽 리어(rear) : 데이터를 넣는 쪽 링 버퍼 사용 - 배열 요소를 앞쪽으로 옮기지 않는 큐 프런트(front) : 맨 처음 요소의 인덱스 리어(rear) : 맨 끝 요소의 하나 뒤의 인덱스(다음 요소를 인큐할 위치를 미리 지정) 1. 큐로 사용할 배열(que) : 인큐하는 데이터를 저장하기 위한 큐 본체용 배열 2. 큐의 최대 용량(max) : 큐의 최대 용량을 저장하는 필드 3. 프런트(front) : 인큐하는 데이터 가운데 첫 번째 요소의 인덱스를 저장하는 필드.. 2022. 3. 31.
[알고리즘 독학] 스택(Stack) 스택 데이터를 일시적으로 저장하기 위한 자료구조 가장 나중에 넣은 데이터를 가장 먼저 꺼냅니다. 스택만들기 스택 본체용 배열 : stk 스택 용량 : max 스택 포인터 : ptr 생성자 IntStack 푸시 메서드 push -스택이 가득차서 푸시 할 수 없는 경우 예외 OverflowIntStackException을 던집니다. 팝 메서드 pop -스택이 비어 있어 팝을 할 수 없는 경우 EmptyIntStackException을 던집니다. 피크 메서드 peak -꼭대기에 있는 데이터를 “몰래 엿보는” 메서드 -스택이 비어 있는 경우 예외 EmptyIntStackException을을 던집니다. 검색 메서드 indexOf -검색을 성공면 찾아낸 요소의 인덱스를 반환하고 실패하면 -1을 반환합니다. 스택의 .. 2022. 3. 29.
[알고리즘 독학] 검색 알고리즘 개념(2) 이진 검색 이진검색 : 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘 package search; import java.util.Scanner; public class Ex03 { static int binSearch(int[] a, int n, int key) { int pl = 0; int pr = n-1; do { int pc = (pl + pr)/2; if(a[pc] == key) return pc; else if(a[pc] < key) pl = pc + 1; else pr = pc - 1; } while (pl 2022. 3. 28.