
자료구조론(7급) 6 - 1 자료구조론(7 급) (과목코드 : 080) 2026년군무원채용시험 응시번호: 성명: 1. 점근적표기법의정의에따라다음세함수가 주어졌을때, 이에대한설명으로가장적절한 것은? , , log ①의증가율은의증가율보다크다. ②의증가율은의증가율보다크다. ③의증가율과의증가율은같을수 있다. ④세함수의증가율은모두같을수있다. 2. 재귀적구현이사용되는알고리즘으로가장적절 하지않은것은? ①트리레벨순회 ②그래프깊이우선탐색 ③하노이탑 ④퀵정렬 3. 다음과같은C언어함수xyz(12)를수행했을때, 결과값으로가장적절한것은? int xyz(int n) { if (n <= 1) return 1; else if (n % 2 == 1) return n + xyz(n/3); else return n + xyz(n-1); } ①15 ②21 ③27 ④35 4. C언어를사용하여다음과같은문자열배열을 선언했을때, 출력값이다른하나는? char *a[3] = { "abcde", "fghi", "mno" }; ①printf("%c\n", a[0][2]); ②printf("%c\n", *a[2]); ③printf("%c\n", *(*a+2)); ④printf("%c\n", **a+2); 5. 다음은원형이아닌이중연결리스트에서데이터를 저장하고있는어떤노드p를삭제하는함수의 코드이다. 이에대한설명으로가장적절한것은? (단, 이연결리스트는데이터를저장하고있지 않은특별한더미노드가맨앞에존재하지만, 맨뒤에는이러한더미노드가존재하지않는다) 1. e = p->data; 2. p->prev->next = p->next; 3. p->next->prev = p->prev; 4. free(p); 5. return e; ①이코드는2번문장에서만실행오류가발생 할수있다. ②이코드는3번문장에서만실행오류가발생 할수있다. ③이코드는2번과3번두개문장에서모두 실행오류가발생할수있다. ④이코드는오류없이잘동작한다. 자료구조론(7급) 6 - 2 6. 배열을이용한리스트ADT 구현에대한설명으로 가장적절하지않은것은? (단, n은리스트에 저장된원소의개수이다) ①선형배열을사용하는경우, 삽입연산의 최악의경우는리스트맨앞에삽입하는 경우이다. ②원형배열을사용하는경우, 삭제할위치의 배열인덱스는시간에계산할수있다. ③원형배열을사용하는경우, 리스트의맨앞의 원소가리스트의맨끝의원소보다배열 에서뒤쪽에위치할수있다. ④원형배열이든선형배열이든관계없이, 삭제 연산은 최악의 경우 최대 n-1개의 원소 이동이필요하다. 7. 일반리스트(General List) L = (e1, e2, e3, …, en)에대해, 함수head(L)은첫번째원소인 e1을반환하고, 함수tail(L)은리스트(e2, e3, …, en)를반환한다고할때, 다음과같은리스트 A에대한함수의수행결과로가장적절하지 않은것은? A = (a, b, (c, d)) ①head(A) = ‘a’ ②head(tail(A)) = ‘b’ ③head(tail(tail(tail(A)))) = ‘c’ ④head(tail(head(tail(tail(A))))) = ‘d’ 8. 다음은단순연결리스트(Singliy Linked List)에서 마지막노드를삭제하는C언어함수이다. 빈칸에 들어갈내용으로가장적절한것은? (단, 리스트 에는2개이상의노드가있으며, p는현재노드를 가리키는 포인터이고, q는 p의 이전 노드를 가리키는포인터이다) typedef struct node { int key; struct node *link; } ListNode; void delete_last_node(ListNode *head) { ListNode *p, *q; q = head; p = head->link; while (p->link != NULL) { ㉠ ; ㉡ ; } free(p); q->link = NULL; } ①㉠: p = q ㉡: q = q->link ②㉠: p = q ㉡: p = p->link ③㉠: q = p ㉡: q = q->link ④㉠: q = p ㉡: p = p->link 9. 후위수식으로가장적절하지않은것은? (단, 연산자는모두이항연산자이다.) ①ABCDEF+-/*+ ②ABC++DE**F/ ③AB+CD-*+EF+ ④AB+C-D*EF/- 자료구조론(7급) 6 - 3 10. 스택을아래와같은단일연결리스트로구현 하였을때, 이에대한설명으로가장적절한것은? (단, 스택에가장최근에추가된원소는C이다) A B C Æ head top ①push와pop 둘다시간에수행할수 있다. ②push는 시간에수행할수있지만, pop은시간에수행할수없다. ③push는 시간에수행할수없지만, pop은시간에수행할수있다. ④push도 시간에 수행할 수 없고, pop도시간에수행할수없다. 11. 원형배열을이용하여큐(Queue) 또는데크 (Double - Ended Queue, Deque)를구현하려고 한다. 다음중이에대한설명으로가장적절한 것은? (a) A B C E (원소가가운데모여있는상태) (b) P Q R S T (원소가양쪽단으로나뉘어져있는상태) ①큐는(a) 상태만가능하지만, 데크는(a)와 (b) 상태모두가능하다. ②그림(b)의데크에서T는가장최근에삽입된 원소가될수있다. ③데크에서(a) 상태만허용하고(b) 상태를 허용하지않는다면, 나머지연산은필요하지 않다. ④배열에저장된원소개수를저장하는변수를 유지하지않으면, 큐와데크에저장된원소의 개수를시간에알수없다. 12. 다음과같은빈도수를가지는5개의문자가 있다고하자. 문자 a b c d e 빈도수 5 3 4 8 11 위에 있는 문자를 사용하여 허프만 코드 (Huffman Code)를생성하였을때각문자에 대한허프만코드의길이로가장적절한것은? ①a : 2비트 ②b : 2비트 ③c : 2비트 ④d : 3비트 13. 다음은어떤트리를첫째자식- 다음형제표현 으로나타낸그림이다. 이트리에대한설명으로 가장적절한것은? (단, 실선은첫째자식링크를, 점선은다음형제링크를나타낸다) C D F B A E G I H J ①이트리의레벨순회결과는A - B - C - F - D - E - G - H - I - J이다. ②이트리의차수는4이다. ③이트리의높이는3이다. (단, 루트만있는 트리의높이는1로가정한다) ④이트리에서단말노드(Leaf)의개수는6개이다. 자료구조론(7급) 6 - 4 14. 다음이진트리에대한의사코드가반환하는 값에대한설명으로가장적절한것은? (단, v는 루트가아니고, 모든내부노드는두개의자식을 가진다고가정한다) p ←parent(v) if (rightChild(p) == v) return p u ←rightChild(p) while( !isExternal(u) ) // 외부노드가아닌동안 u ←leftChild(u) return u ①v의전위순회계승자 ②v의전위순회선행자 ③v의후위순회계승자 ④v의후위순회선행자 15. 다음과같은이진탐색트리(Binary Search Tree)에서키값7을가진노드를삭제했을 경우에대한설명으로가장적절한것은? ①키값1 또는키값11을가진노드가후계자가 된다. ②키값3 또는키값10을가진노드가후계자가 된다. ③키값4 또는키값9를가진노드가후계자가 된다. ④키값5 또는키값8을가진노드가후계자가 된다. 16. 그래프의깊이우선탐색(DFS)과너비우선 탐색(BFS)에대한설명으로가장적절하지않은 것은? ①두탐색모두무방향그래프의연결성을검사 하기위해활용될수있다. ②깊이우선탐색은FIFO 방식이고너비우선 탐색은LIFO 방식의전략을사용한다. ③두탐색방식모두방향그래프내사이클 존재여부를판단할수있다. ④그래프를인접행렬로표현했을때, 두탐색 알고리즘의시간복잡도는으로동일 하다. 17. 다음 그래프에 대하여 Kruskal 알고리즘을 수행하는과정에서나타날수있는정점의연결 상태로가장적절하지않은것은? C A H B I 3 F D G E 4 14 1 6 11 5 5 9 5 5 7 1 12 18 ①{A, C} {B, G} {D} {E} {F} {H} {I} ②{A, C} {B, G} {D} {E} {F, I} {H} ③{A, B, C, F, G} {D} {E, H} {I} ④{A, B, C, F, G, I} {D} {E} {H} 자료구조론(7급) 6 - 5 18. Bellman-Ford 알고리즘에서해가존재하지않는지 (즉, 최단경로및거리가정의될수없는지) 판단하는코드로가장적절한것은? (단, 해존재 여부판단은그래프의모든간선을확인하며거리 갱신작업을(|V|-1)번반복한후에수행한다고 가정하라. 또한, d[v]는정점v의거리로계산된값, w(u,v)는간선(u,v)의가중치를의미한다) ①for each u ∈V if( d[u] > 0 ) then output "해없음" ②for each u ∈V if( d[u] < 0 ) then output "해없음" ③for each (u,v) ∈E if( d[u] + w(u,v) > d[v] ) then output "해없음" ④for each (u,v) ∈E if( d[u] + w(u,v) < d[v] ) then output "해없음" 19. 다음과같은방향그래프(Directed Graph)에대해 Dijkstra 알고리즘을이용하여시작정점0에서 다른모든정점까지최단경로를구해배열에 저장한다고할때, 중간단계로나타나는배열의 모습으로가장적절하지않은것은? ① [0] [1] [2] [3] [4] [5] 0 4 7 9 11 12 ② [0] [1] [2] [3] [4] [5] 0 4 7 9 11 13 ③ [0] [1] [2] [3] [4] [5] 0 4 7 9 11 15 ④ [0] [1] [2] [3] [4] [5] 0 4 7 10 12 ∞ 20. 다음입력전체에대해퀵정렬의분할함수를 한번수행한후가능한전체원소나열상태로 가장적절한것은? (단, 분할기준으로가장 마지막원소를사용하고, 최종적으로기준원소를 제자리에위치시킨다.) 2 - 3 - 6 - 8 - 7 - 4 - 1 - 5 ①2 - 3 - 1 - 4 - 5 - 8 - 6 - 7 ②2 - 3 - 1 - 5 - 4 - 6 - 7 - 8 ③1 - 4 - 2 - 3 - 6 - 5 - 7 - 8 ④1 - 3 - 6 - 4 - 5 - 8 - 2 - 7 21. 다음의사코드가나타내는정렬알고리즘으로 가장적절한것은? (단, 배열A의인덱스는 0부터n - 1까지이다) for pass ←1 to n - 1 save ←A[pass], j ←pass - 1 while ( (j ≥0) & (A[j] > save) ) A[j + 1] ←A[j] j ←j - 1 A[j + 1] ←save ①선택정렬 ②삽입정렬 ③쉘정렬 ④기수정렬 22. 탐색을 위한 자료구조 및 알고리즘에 대한 설명으로가장적절한것은? ①해싱은키들의대소관계를기반으로만들어진 탐색자료구조가아니다. ②이진탐색트리의키삽입연산은루트에서 삽입할위치의단말노드까지따라내려가는 작업이필요하므로log시간에수행된다. ③루트노드의왼쪽서브트리와오른쪽서브 트리의높이 차이가 상수배로보장되면 균형이진탐색트리가될수있다. ④순서배열에서의키삭제연산은이진탐색을 통해 키가삭제될위치를찾으면되므로 log시간에수행된다. 자료구조론(7급) 6 - 6 23. 다음원소들을빈이진탐색트리에순서대로 삽입할때, 최종트리의루트노드와높이는? (단, 루트만있는트리의높이는1이라고가정 한다) 48, 15, 33, 62, 39, 7, 40, 26, 54 ①39, 4 ②39, 5 ③48, 4 ④48, 5 24. 공백트리에키값2, 1, 8, 9, 7, 3, 6을차례대로 삽입하여2 - 3 - 4 트리를생성하면1개의4 - 노드가 만들어진다. 4 - 노드에있는원소로가장적절한 것은? ①2 ②6 ③8 ④9 25. 테이블크기가인해시테이블에다음 키들이순서대로삽입될때, 최종해시테이블의 상태로가장적절한것은? (단, 충돌은2차 조사법 mod 을사용하여 해결한다) 15, 12, 22, 29, 9 ① [0] [1] [2] [3] [4] [5] [6] - 15 22 9 29 12 - ② [0] [1] [2] [3] [4] [5] [6] - 15 22 29 - 9 12 ③ [0] [1] [2] [3] [4] [5] [6] - 15 22 29 9 12 - ④ [0] [1] [2] [3] [4] [5] [6] - 15 22 29 - 12 9




















2026 세무사 행정소송법 해설 이승철
2025 법원직 9급 부동산등기법 해설 알파캣
2025 국회직 9급 한국사 해설 한Pro