9급 국가직 알고리즘 2025년 기출문제

시행 2025-04-05 · 책형 나 · 20문항 · 출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)

전체 풀기 (시험 모드)PDF 문제지 · 정답표 · 해설집
1.
다음 정수 열에서 연속 부분합의 최댓값은?
1, -3, 2, 4, -1, 5, -3, 2, 1, -2
알고리즘
  1. 5
  2. 8
  3. 10
  4. 15
정답 보기

정답 ③ · 해설 보기

2.
이진 탐색(binary search) 알고리즘에 대한 설명으로 옳지 않은 것은?
알고리즘
  1. 탐색 범위가 절반씩 줄어든다.
  2. 탐색할 데이터는 순서 없이 저장되어 있다.
  3. 시간 복잡도는 이다.
  4. 1,000개의 데이터가 존재하는 경우, 최대 10회의 탐색으로 완료된다.
정답 보기

정답 ② · 해설 보기

3.
동적 계획법(dynamic programming)으로 설계된 알고리즘의 동작 방식에 대한 설명으로 옳지 않은 것은?
알고리즘
  1. 큰 문제를 작은 문제로 나눌 수 있어야 한다.
  2. 작은 문제들이 반복해서 사용되며, 이 작은 문제들의 결괏값을 저장해 두고 활용한다.
  3. 상향식(bottom-up) 접근 방식 또는 하향식(top-down) 접근 방식으로 구현할 수 있다.
  4. 메모하기(memoization) 방법을 활용하여 연산과 탐색이 증가하고 실행속도가 저하된다.
정답 보기

정답 ④ · 해설 보기

4.
다음 정렬 알고리즘 중에서 동일한 최악 시간 복잡도를 가진 것만을 모두 고르면?
ㄱ. 선택 정렬(selection sort)
ㄴ. 삽입 정렬(insertion sort)
ㄷ. 힙 정렬(heap sort)
ㄹ. 퀵 정렬(quick sort)
알고리즘
  1. ㄱ, ㄴ, ㄷ
  2. ㄱ, ㄴ, ㄹ
  3. ㄱ, ㄷ, ㄹ
  4. ㄴ, ㄷ, ㄹ
정답 보기

정답 ② · 해설 보기

5.
그림과 같은 과정을 포함하여 정렬을 실행하는 알고리즘은?
알고리즘
  1. 퀵 정렬
  2. 셸 정렬(shell sort)
  3. 기수 정렬(radix sort)
  4. 병합 정렬(merge sort)
정답 보기

정답 ④ · 해설 보기

6.
다음과 같은 배열 A에서 A[0]부터 삽입 연산을 차례대로 적용하여 이진 탐색 트리 T를 생성한 후, T를 전위(preorder) 순회 방법으로 방문한 값들을 배열 B에 B[0]부터 순차적으로 저장한 결과는?
A[] = {40, 20, 30, 10}
알고리즘
  1. B[] = {10, 20, 30, 40}
  2. B[] = {10, 30, 20, 40}
  3. B[] = {40, 20, 10, 30}
  4. B[] = {40, 30, 20, 10}
정답 보기

정답 ③ · 해설 보기

7.
30억 개의 정수를 갖는 배열에서 20개의 정수를 제외한 나머지가 모두 정렬되어 있다면, 이 배열을 가장 빠르게 정렬할 수 있는 알고리즘은?
알고리즘
  1. 퀵 정렬
  2. 선택 정렬
  3. 병합 정렬
  4. 삽입 정렬
정답 보기

정답 ④ · 해설 보기

8.
알고리즘의 시간 복잡도에 대한 설명으로 옳은 것은?
알고리즘
  1. 널리 사용되는 것은 최악 시간 복잡도이다.
  2. 모든 알고리즘은 최악 시간 복잡도와 평균 시간 복잡도가 다르다.
  3. 최악의 경우 실행 시간은 모든 입력에 대한 실행 시간의 하한을 제공한다.
  4. 최선의 경우 실행 시간은 모든 입력에 대한 실행 시간의 상한을 제공한다.
정답 보기

정답 ① · 해설 보기

9.
다항적 시간 복잡도를 갖는 탐욕(greedy) 알고리즘으로 최적의 해를 구할 수 없는 것은?
알고리즘
  1. 부분 배낭(fractional knapsack) 문제
  2. 한 정점에서 다른 정점으로의 최단 경로 탐색 문제
  3. 이진 트리의 최대합 경로 찾기 문제
  4. 최소 신장 트리(MST, Minimum Spanning Tree) 생성 문제
정답 보기

정답 ③ · 해설 보기

10.
해시(hash) 함수가 이고 키값이 15, 11, 5, 13, 22, 21 순서로 저장된 해시 테이블의 결과가 다음과 같은 경우에 사용된 충돌 해결 기법은?
인덱스
0
1
2
3
4
5
6
7
키값
22
21
11
5
13
15
알고리즘
  1. 체이닝(chaining)
  2. 선형 조사법(linear probing)
  3. 분기 한정법(branch and bound)
  4. 이차 조사법(quadratic probing)
정답 보기

정답 ② · 해설 보기

11.
함수 에 대한 점근 표기법으로 옳지 않은 것은?
알고리즘
정답 보기

정답 ① · 해설 보기

12.
다음 문자열에 대하여 허프만 코딩(Huffman coding) 알고리즘으로 생성한 허프만 트리에서 루트(root) 노드부터 가장 깊은 단말(leaf) 노드까지 도달하기 위한 단순 경로상의 간선(edge) 개수는?
AAAEEBCCDDDDCCEEEAADDEEEBB
알고리즘
  1. 3
  2. 4
  3. 5
  4. 6
정답 보기

정답 ① · 해설 보기

13.
그래프(graph) 구조로 데이터를 저장하고 그래프 알고리즘을 이용하여 문제를 해결하는 대표적인 예만을 모두 고르면?
ㄱ. 소셜 네트워크에서 친구 추천하기
ㄴ. 가장 적은 수의 동전으로 거스름돈 돌려받기
ㄷ. 최소 비용의 여행 경로 탐색하기
ㄹ. 정렬된 1차원 배열 구조에서 특정값 빠르게 찾기
알고리즘
  1. ㄱ, ㄷ
  2. ㄱ, ㄹ
  3. ㄴ, ㄷ
  4. ㄴ, ㄹ
정답 보기

정답 ① · 해설 보기

14.
다음 C 프로그램의 실행 결과는?
#include <stdio.h>
int count = 0;
int A[] = {1, 3, 5, 8, 12, 15, 20, 24, 30, 44, 52, 61, 64, 70, 81, 90};

int bin(int low, int high, int key) {
	int mid; 
	count++;
	if (low > high) return 0;
	else {
		mid = (low + high) / 2;
		if (key == A[mid]) return 1;
		else if (key < A[mid])
			return bin(low, mid - 1, key);
		else
			return bin(mid + 1, high, key);
	}
}

int main() {
	bin(0, 15, 22);
	printf("count: %d, ", count);
	bin(0, 15, 52);
	printf("count: %d\n", count);

	return 0;
}
알고리즘
  1. count: 4, count: 8
  2. count: 4, count: 9
  3. count: 5, count: 9
  4. count: 5, count: 10
정답 보기

정답 ③ · 해설 보기

15.
다음 그래프에서 크루스칼(Kruskal) 알고리즘으로 최소 신장 트리(MST)를 생성할 때 다섯 번째로 추가되는 간선은? (단, 초기 MST는 공집합이다)
알고리즘
  1. (b, f)
  2. (c, d)
  3. (d, e)
  4. (d, g)
정답 보기

정답 ① · 해설 보기

16.
다음 최대 힙(max heap)에 노드 25가 추가될 경우, 최대 힙 성질을 만족하도록 삽입 연산이 완료된 후의 구조로 옳은 것은?
알고리즘
정답 보기

정답 ① · 해설 보기

17.
백트래킹(backtracking)에 대한 설명으로 옳지 않은 것은?
알고리즘
  1. 스택(stack)을 이용하여 구현할 수 있다.
  2. 재귀적(recursive)으로 구현할 수 있다.
  3. 제약 충족(constraint satisfaction) 문제에 유용하다.
  4. 균형 탐색 트리(balanced search tree) 구조를 유지한다.
정답 보기

정답 ④ · 해설 보기

18.
문자열 매칭을 위한 알고리즘으로 옳지 않은 것은?
알고리즘
  1. 라빈-카프(Rabin-Karp)
  2. 벨만-포드(Bellman-Ford)
  3. 보이어-무어(Boyer-Moore)
  4. KMP(Knuth-Morris-Pratt)
정답 보기

정답 ② · 해설 보기

19.
다음 그래프에서 A부터 깊이 우선 탐색(depth first search)을 수행하는 경우, 가능한 정점의 방문 순서로 옳지 않은 것은?
알고리즘
  1. A → B → D → E → C → F → G → H
  2. A → C → F → H → G → E → D → B
  3. A → C → G → H → F → D → E → B
  4. A → D → B → E → C → G → H → F
정답 보기

정답 ② · 해설 보기

20.
다음 함수는 0보다 큰 자연수 n이 입력될 때, 1 2 3 4 … n 순서로 출력하는 재귀 함수이다. (가) ~ (다)에 들어갈 내용을 바르게 연결한 것은?
void fun(int n) { 
	if ( (가) ) {
		(나)
	}
	(다)
}
(가) (나) (다)
알고리즘
  1. n > 0 printf("%d ", n); fun(n-1);
  2. n > 0 fun(n-1); printf("%d ", n);
  3. n > 1 printf("%d ", n); fun(n-1);
  4. n > 1 fun(n-1); printf("%d ", n);
정답 보기

정답 ④ · 해설 보기