
알고리즘_가정답(2026-04-04 / 324.0KB / 266회)
알고리즘_가정답(2026-04-04 / 980.5KB / 23회)
2026 국가직 9급 알고리즘 해설 공기출(2026-05-10 / 1.34MB / 121회)
2026년도 국가공무원 9급 공채 필기시험 알고리즘 책형 1쪽 알고리즘 1. 다음은 1 이상인 x에 대해 1부터 x까지의 합을 계산하는 C 함수이다. (가)에 들어갈 코드는? int sum(int x) { if (x int main() { double wgt[] = {10, 18, 25, 15}; double val[] = {60, 90, 100, 120}; double ratio[4] = {}, W = 40, max_r, totalVal = 0.0; int i, max_i; for (i = 0; i < 4; i++) ratio[i] = (가) ; while (W > 0) { max_r = -1.0; max_i = -1; for (i = 0; i < 4; i++) { if (wgt[i] > 0 && ratio[i] > max_r) { max_r = ratio[i]; max_i = i; } } if (max_i == -1) break; if (W >= wgt[max_i]) { W -= wgt[max_i]; totalVal += val[max_i]; } else { totalVal += val[max_i] * (나) ; break; } wgt[max_i] = 0; } printf("%.1f\n", totalVal); return 0; } (가) (나) 출력값 ① val[i] / wgt[i] W / wgt[max_i] 255.0 ② val[i] / wgt[i] wgt[max_i] / W 255.0 ③ val[i] / wgt[i] W / wgt[max_i] 220.0 ④ wgt[i] / val[i] W / wgt[max_i] 220.0 13. 다음 C 프로그램의 실행 결과에 포함되지 않는 것은? #include int count = 0; void f(int n, char from, char tmp, char to){ count++; if (n == 1) printf("%d: 원판 %d를(을) %c에서 %c로 이동\n ", count, n, from, to); else { f(n - 1, from, to, tmp); printf("%d: 원판 %d를(을) %c에서 %c로 이동\n ", count, n, from, to); f(n - 1, tmp, from, to); } } int main() { f(3, 'a', 'b', 'c'); return 0; } ① 4: 원판 1를(을) c에서 b로 이동 ② 4: 원판 3를(을) a에서 c로 이동 ③ 5: 원판 1를(을) b에서 a로 이동 ④ 7: 원판 1를(을) a에서 c로 이동 14. 비어있는 이진 탐색 트리(binary search tree)에 다음 키값이 순서대로 입력되면, 15를 찾기 위해 방문해야 하는 노드의 개수는? 50, 40, 30, 35, 20, 15, 25, 10 ① 3 ② 4 ③ 5 ④ 6 2026년도 국가공무원 9급 공채 필기시험 알고리즘 책형 4쪽 15. 다음 배열에서 보간 탐색(interpolation search)으로 58을 찾고자 할 때, 첫 번째 탐색 위치는? (단, 배열에서 위치의 차이는 값의 차이에 비례한다는 가정하에 탐색 위치를 계산하며 소수점 이하는 반올림한다) 위치 0 1 2 3 4 5 6 7 8 9 배열 3 7 12 22 32 58 67 80 87 89 ① 2 ② 4 ③ 6 ④ 8 16. 다음과 같이 전체 버킷 개수가 13개이고 버킷당 1개의 슬롯을 가지는 비어있는 해시 테이블에 값 를 순서대로 해시 함수를 사용하여 저장하였을 때, 버킷 번호 4에 저장되는 값은? (단, 해시 함수로 mod 을 사용하며, 충돌 해결은 개방 주소 방법의 선형 조사법(linear probing)을 적용한다) 버킷 번호 슬롯 0 1 2 3 4 5 6 7 8 9 10 11 12 ① 4 ② 46 ③ 67 ④ 81 17. 다음 두 문자열 A와 B의 편집 거리(edit distance)는? (단, 허용하는 문자열 연산은 삽입, 삭제, 교체 연산이다) ○ 문자열 A: algorithm ○ 문자열 B: anthem ① 5 ② 6 ③ 7 ④ 9 18. 다음 배열에 대해 아래 알고리즘을 적용하여 정렬하고자 한다. 3번째 for 루프를 수행할 때, 배열 내에서 교환되는 두 값은? 위치 0 1 2 3 4 5 6 7 8 9 배열 9 21 54 32 77 45 19 83 12 3 Sort(A[], n): // n은 입력배열 A의 크기이다. for last ← (n – 1) downto 1 A[0 ... last] 중 가장 큰 수 A[k]를 찾는다. A[k]와 A[last]의 값을 교환한다. ① 3, 54 ② 21, 45 ③ 21, 54 ④ 32, 77 19. 다음과 같이 오름차순 정렬을 수행하는 알고리즘은? 초기 상태 5 20 17 6 2 13 10 1단계 5 20 17 6 2 13 10 2단계 5 17 20 6 2 13 10 3단계 5 6 17 20 2 13 10 4단계 2 5 6 17 20 13 10 5단계 2 5 6 13 17 20 10 6단계 2 5 6 10 13 17 20 ① 병합 정렬 ② 삽입 정렬 ③ 선택 정렬 ④ 퀵 정렬 20. 문자에 대한 빈도수가 다음과 같을 때, exam을 허프만(Huffman) 코드로 작성하면 비트 수는? 문자 a b c e m x 빈도수 8 5 3 10 6 1 ① 10 ② 11 ③ 12 ④ 14













2026 세무사 행정소송법 해설 김동현