본문 바로가기

Algorithm9

[알고리즘/자바] 하노이의 탑 하노이의 탑 Towers of Hanoi 하노이의 탑이란 쌓아 놓은 원반을 최소한의 횟수로 옮기는 퍼즐의 일종이다. 세 개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 원반들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원반들이 작은 것이 위에 있도록 순서대로 쌓여 있다. 게임의 목적은 아래 조건을 만족시키면서, 한 기둥에 꽂힌 원반들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것이다. 한번에 하나의 원반만 이동이 가능하며, 최종적으로 모든 원반을 세 번째 기둥으로 옮겨야 한다. 작은 원반 위로 큰 원반을 이동할 수 없다. 가장 위의 원반만 이동할 수 있다. 2019. 12. 25.
[알고리즘/자바] 재귀 알고리즘 분석 : 상향식 분석 2019. 12. 25.
[알고리즘/자바] 재귀 알고리즘으로 유클리드 호제법 구현하기 유클리드 호제법 크기가 큰 두 수가 있을 때 최대 공약수를 빠르게 구하기 위해서 사용한다. 유클리드 호제법은 A를 B로 나눈 나머지가 C일 때, (A와 B의 최대 공약수) = (B와 C의 최대 공약수)라는 사실을 이용해서 처음에 구하려고 했던 숫자의 크기를 점점 줄여 간단하게 만든 다음 최대 공약수를 구하는 방법이다. 예를 들어, 48과 21의 최대 공약수를 구해본다면. 48/21 ••• 6 21/6 ••• 3 6/3 ••• 0 최대 공약수는 3이 된다. 유클리드 호제법 메서드 구현 static int ea(int x, int y) { if (y == 0){ return x; } else { return ea(y, x % y); } class EuclidGCD { static int ea(int x, i.. 2019. 12. 23.
[알고리즘/자바] 재귀 알고리즘으로 팩토리얼 구하기 재귀 Recursive 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적이라고 한다. 프로그래밍에서는 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 방식으로 주어진 문제를 푸는 방법을 뜻한다. 재귀 호출이나 되부름이라고 불리기도 한다. 팩토리얼 factorial 팩토리얼을 구하는 문제를 풀어보기 전에 팩토리얼의 개념이 가물가물한 문돌이, 문순이들은 이 단락을 읽어보도록 하자. 팩토리얼의 정의 간단하게 말해 수를 단계적으로 곱한다는 것이다. 계승이라고도 한다. 사용 n! = 1 x (···) x n 예시 3! = 1 x 2 x 3 = 6 5! = 1 x 2 x 3 x 4 x 5 = 120 단, 0! 은 1로 약속한다. 팩토리얼을 이해하기 쉬운 링크 첨부 https://t.. 2019. 12. 23.
[알고리즘/자바] 이진검색 2019. 12. 16.
[알고리즘/자바] 선형검색 2019. 12. 16.
[알고리즘/자바] 배열 역순 정렬 알고리즘 배열 역순 정렬 알고리즘 int arr = {1, 2, 3, 4, 5}; 배열 arr을 역순 정렬해서 {5, 4, 3, 2, 1} 결과값이 나오게 하는 메서드를 작성해보자. 1. 교환횟수 arr 배열을 역순 정렬하기 위해서는 가장 먼저 1과 5를 교환하고, 2와 4를 교환하면 된다. 이렇듯 배열을 역순 정렬하기 위해서 이루어져야 하는 교환 횟수는 배열의 길이/2이다. 길이가 홀수인 경우 가운데 요소는 교환할 필요가 없기 때문에 이 나눗셈에서 나머지는 버린다. 2. 두 값의 교환 두 값의 교환은 공중에서 바꿔치기하듯이 이루어질 수 없다. 반드시 임시로 값을 담아둘 변수를 마련하여, 그 곳에 값을 담아두고 다른 값을 옮기는 과정을 거쳐야한다. arr[0]의 값을 arr[4]에 대입하는 순간 arr[4]는 1.. 2019. 12. 16.
[자료구조] 스택 Stack 스택이란? 데이터를 일시적으로 저장하기 위해 사용하는 자료구조이다. 데이터의 입력과 출력 순서는 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 후입선출(LIFO, Last In First Out)의 방식이다. 스택에서 데이터를 넣는 작업 : 푸시 Push 스택에서 데이터를 꺼내는 작업 : 팝 Pop 푸시와 팝이 이루어지는 위치 : 꼭대기 Top 스택의 가장 아랫부분 : 바닥 Bottom 스택의 작동 스택은 바닥이 막힌 원통에 공을 집어넣고 꺼내는 것과 같다. 넣는 작업을 푸시(Push) 꺼내는 작업을 팝(Pop)이라고 한다. 그림에서는 먼저 8번 공을 원통 안에 넣고, 그 다음 3번 공을 넣었다. 스택은 다시 공을 꺼낼 때 가장 마지막에 넣은 3번공부터 꺼낼 수 있는 구조이다. 때문에 스택에서는 가장 마지.. 2019. 12. 16.
[알고리즘/자바] 기수 변환 정숫값을 임의의 기수로 변환하는 알고리즘 10진수 정수를 n진수 정수로 변환하려면 정수를 n으로 나눈 나머지를 구하는 동시에 그 몫에 대해 나눗셈을 반복해야 한다. 이 과정을 몫이 0이 될 때까지 반복하고, 이런 과정으로 구한 나머지를 거꾸로 늘어놓은 숫자가 바로 기수로 변환한 숫자이다. 2019. 12. 8.