본문 바로가기

Algorithm4

삼각 달팽이 문제 1. 문제 풀이 방법처음에는 각 방향에 대해 이동하는 함수를 별도로 구현하여 시도하였지만 실패하였고, 결국 교제를 보고 해결하였다.핵심은 각 방향에 대한 값을 배열로 관리하는 것인데 해당 문제에서 이동 방향은위쪽, 오른쪽, 왼쪽 위 이렇게 3방향이다.이 방향들을 각각 2차원 배열 좌표 기준으로 표현하면 이렇다.static int [] dx = {0,1,-1};static int [] dy = {1,0,-1};dx가 열에 대한 증가량, dy가 행에 대한 증가량, 방향은 순서대로 위쪽, 오른쪽, 왼쪽그러면 아래 방향을 가리키는 dx[0] ,dy[0]을 현재 좌표에 더하여 아래로 더 이동할 수 없을 때까지 증가시키고그 이후에 오른쪽 방향인 dy[1], dy[1]를 현재 좌표에 대하여 오른쪽으로 더 이동할 수 .. 2025. 3. 19.
재귀 알고리즘 상향식/하향식 분석 방법(with 피보나치수열) HTML 삽입 미리보기할 수 없는 소스 1. 재귀 함수 분석 방법 재귀 함수의 분석 방법에는 1. 하향식 분석과 2. 상향식 분석 두 가지가 있다. 하향식 분석은 마지막에 종료되는 부분에서 반대로 이동하는 분석법이다.(콜스택의 가장 아랫부분) 상향식 분석은 가장 먼저 종료되는 부분에서 반대로 이동하는 분석법이고(콜스택의 가장 윗부분) 자세한 것은 아래 예시를 통해 설명한다. 2. 피보나치수열 문제를 통한 예시 private static int fibonacci(int n){ // 0, 1, 1, 2, 3, 5 if(n >= 2){ int result = fibonacci(n-1) + fibonacci(n-2); return result; } else{ return n; } } 우선 위의 예시는 자바 코드.. 2024. 1. 27.
재귀 알고리즘 팩토리얼 예제 HTML 삽입 미리보기할 수 없는 소스 1. JAVA 코드를 통한 팩토리얼 예제 소스는 다음과 같다. 1. public static void main(String[] args) { 2. 3. int no = 4; 4. System.err.println("결과 : "+factorial(no)); 5. } 6. 7. public static int factorial(int n){ 8. System.out.println("n : "+n); 9. 10. if(n > 0){ 11. int recursiveResult = factorial(n - 1); 12. int result = n * recursiveResult; 13. System.out.println("factorial(" + n + ") = " + n .. 2024. 1. 25.
퀵 정렬 예시 & 버블 정렬과 속도 비교 HTML 삽입 미리보기할 수 없는 소스 1. 퀵 정렬 개념 퀵 정렬은 이름 그대로 정렬 알고리즘 중 빠른 속도를 내기 때문에 붙여진 이름이다. 간단한 구조를 가지고 있는 버블 정렬과 선택 정렬등과는 방식이 확연히 다르고 학습에 대한 난이도가 확 뛰는 게 느껴졌다.정렬하는 대략적인 방식은 아래와 같다. (자세한 방식은 아래 코드 참조) 1. 중앙값을 기준으로 왼쪽 숫자의 오른쪽 숫자를 중앙값과 비교한 뒤 조건에 따라 스왑 한다. 2. 그 후 인덱스를 위의 그림과 같이 개념적으로 쪼개며 같은 행위를 반복한다. 3. 위의 반복은 재귀함수와 스택을 이용한 반복문으로 구현한다. 2. JAVA를 통한 퀵 정렬 구현 예시 public static void quickSort(int arr[], int left, int.. 2024. 1. 24.