검색결과 리스트
알고리즘에 해당되는 글 3건
- 2014.12.26 재귀 알고리즘
- 2014.12.26 정렬 sort 문제
- 2014.11.29 기출 알고리즘
“Factorial n”을 구하는 재귀 알고리즘을 작성하시오.(90회 정보관리 기술사)
1. 재귀알고리즘의 개념
가) 재귀알고리즘의 정의
- 수학적 귀납법을 역순으로 이용하여 자신의 함수를 반복적으로 호출하는 방법
나) 재귀알고리즘의 구성 분할 정복 |
문제의 크기가 N인 큰 문제를 작은 문제로 환원, 이때 작은 문제 역시 큰 문제와 유사함 |
재귀 호출 |
Self Call, Boomerang |
아주 작은 문제 |
직접 해결할 정도로 작아짐, 베이스 케이스가 됨 |
2. 재귀 알고리즘의 작성 절차 및 효율성
가) 재귀 알고리즘의 작성 절차
Step1 |
- 더 작은 문제로 표시할 수 있는지 시도(문제 크기를 하나씩 줄이는 방법, ,반으로 줄이는 방법, 다른 여러 개의 작은 문제의 조합으로 표시하는 방법) - 문제 크기 파라미터 N을 확인 |
Step 2 |
문제를 직접 풀 수 있는 것이 어떤 경우인지 베이스 케이스 확인 |
Step 3 |
- N이 줄어서 반드시 베이스 케이스를 만나는지 확인 - N이 양수인지 음수인지, 짝수인지 홀수인지, 또는 부동소수인지 정수인지 모든 경우에 대해 모두 검증. |
Step 4 |
베이스 케이스와 베이스 케이스가 아닌 경우를 나누어서 코드를 작성 |
나) 재귀 알고리즘의 효율성
- 공간적 비효율(저장공간)
- 시간적 비효율(저장, 복원에 걸리는 시간)
- 가능하다면 반복문으로 대치하는 것이 유리
3. 문제에서 제시한 Factorial n 에 대한 풀이
가) 문제에 대한 해석
n! = n • (n-1) • (n-2) • ... • 1 (단, 1! = 0! = 1)
int Factorial(int n)
{ if (n = = 1)
return 1;
else
return(n * Factorial(n-1));
}
나) 코드로 구현
int Factorial(int n) 팩토리얼 { int product = 1; 곱셈의 결과 값을 초기화 for (int i = 1; i <= n; i++) 1부터 n까지 product *= i; 계속 곱해서 저장 return product; 결과를 리턴 } |
4. 재귀 알고리즘의 이용
- 이진 탐색 : 문제 크기의 감소, N, N/2, N/4, … , 1
- 문자열 뒤집기
- K 번째 작은 수 찾기
- 피보나치 수열
“끝”
정렬 sort 문제 (0) | 2014.12.26 |
---|---|
기출 알고리즘 (0) | 2014.11.29 |
No |
기출 문제 |
비고 |
1 |
Bubble Sort 알고리즘에 대하여 다음 내용을 설명하시오. (오름차순 기준) 1) Flag 를 두지 않는 경우와 Flag 를 두는 경우로 나누어 설명하고, Flag 를 두는 이유를 설명하시오 2) 다음 키 값을 갖는 파일을 Bubble Sort 알고리즘을 적용하여 Sort 하는 과정을 보이시오 (n=8 : 30, 50, 10, 80, 40, 60, 70, 90) |
응용 104-2 |
2 |
퀵 정렬 (Quick Sort) 알고리즘을 설명하고, 다음 데이터를 퀵 정렬 알고리즘을 사용해서 정렬하는 과정을 설명하시오 30,15,16,24,38,33,17,29,32 |
관리 99-4 |
3 |
다음은 C 언어로 작성된 버블 정렬 (Bubble Sort) 알고리즘 프로그램의 일부이다. 프로그램을 완성하시오 #include <stdion.h> int main() { int data[5] = {2, 5, 1, 4, 3}; bubble(data, 5); for(int i=0; i<5; i++) { print("%d ", data[i]); } return 0; } |
관리 95-2 |
4 |
정렬 (Sorting) 알고리즘의 하나인 삽입 정렬 (Insertion Sorting) 알고리즘을 기술하고 이 알고리즘이 어떤 경우에 효과적인지 설명하시오. 또한 평균 연산 시간 (Big O) 과 최악의 연산 시간을 근거와 함께 설명하시오 |
관리 90-2 |
5 |
정렬 (Sorting) 문제의 하한 (Lower Bound) (n log n) 이라는 것을 증명해 보시오 |
관리 75-3 |
http://www.sorting-algorithms.com/
http://devbot.tistory.com/entry/
http://thrillfighter.tistory.com/210
104회 응용
1)2교시- 버블(bubble) 소트
99회
1)1교시=> 이진탐색트리 에서 데이터 삽입과정
2)4교시=> Quick sort의개념과 사례풀이
98회
1)4교시=>인공지은 응용정보시스템이나 게임 개발시
길찾기에 이용되는 Dijkstra와 A*알고리즘 비교
96회
2)1교시=>최소 신장 트리(MST)알고리즘 설명
95회
1)2교시=>버블 정렬 알고리즘 설명 및 사례
90회
1)1교시=>재귀 알고리즘
2)1교시=>자료구조 heap을 설명하고 max-heap/min-heap
3)2교시=>삽입 정렬 알고리즘 설명, 효과적인 경우,평균 연산시간과 최악 연산시간
4)4교시=>A*알고리즘을 8-퍼즐 게임에 적용하에 설명하시오
89회
1)4교시=>알고리즘의 평가방법 인 time complexity와 space complexity대해서 설명하시오
87회
1)1교시=>휴리스틱 알고리즘인 A*에 대해 설명하시오
2)1교시=>알고리즘 설계 기법중 [동적 계획법]에 대해서 설명하시오
3)4교시=>MST 개념과 Prim 및 Kruskal 알고리즘을 통한 문제풀이
86회
1)2교시=> Bzier 곡선 생성 알고리즘
2)4교시=> Banker's 알고리즘
84회
1)3교시=>Dijkstra 알고리즘을 통한 문제풀이
83회
1)4교시=>Greedy Method 의 특징, 해를 구하는 절차 및 Knapsack 알고리즘
80회
1)3교시=>유전자 알고리즘의 특정,절차,활용방법
<미출제 영역>
1.문자열 패턴 탐색의 BEST Practice => 보이어 무어
2.알고리즘 설계 기법의 Base Theory => Back Tracking
재귀 알고리즘 (0) | 2014.12.26 |
---|---|
정렬 sort 문제 (0) | 2014.12.26 |
RECENT COMMENT