본문 바로가기
CS/자료구조

방통대 자료구조 기말 기출 문제 유형 시험 대비 예상 문제 - 4지선다형

by Renechoi 2023. 12. 2.

1. 자료와 정보의 차이점에 대한 설명으로 올바른 것은?

① 자료는 가공되지 않은 형태이며, 정보는 자료를 처리한 결과이다.
② 자료와 정보는 동일한 개념이다.
③ 정보는 현실 세계에서 관찰되는 사실이며, 자료는 그 사실의 가공된 형태이다.
④ 정보는 물리적인 형태로 존재하며, 자료는 추상적인 개념이다.

정답: 1
해설: 자료는 현실 세계에서 관찰이나 측정을 통해 수집된 값이나 사실이며, 정보는 자료를 처리하여 얻어진 유용한 형태이다.

2. 추상화의 정의에 대한 설명으로 적절하지 않은 것은?

① 복잡한 자료를 간단하게 표현하는 과정이다.
② 문제 해결에 필요한 핵심 요소만을 강조한다.
③ 추상화는 소프트웨어의 복잡성을 증가시킨다.
④ 일상적인 예로, 자동차 운전 시 모든 기계적 세부 사항을 알 필요가 없다.

정답: 3
해설: 추상화는 복잡한 자료를 간단하게 표현하고, 문제 해결에 필요한 핵심 요소만을 강조하여 복잡성을 줄이는 과정이다.

3. 다음 중 배열의 특징에 대한 설명으로 올바른 것은?

① 배열의 각 원소는 연속적인 메모리 공간에 저장된다.
② 배열은 동적으로 크기를 변경할 수 있다.
③ 배열의 원소는 서로 다른 자료형을 가질 수 있다.
④ 배열은 비선형 자료구조이다.

정답: 1
해설: 배열은 여러 값을 연속적으로 저장하는 자료 구조로, 각 원소들은 모두 같은 자료형을 가지며, 연속적인 메모리 공간에 저장된다.

4. 스택의 작동 원리에 대한 설명으로 맞는 것은?

① 선입선출(FIFO) 방식으로 작동한다.
② 데이터는 스택의 양쪽 끝에서 삽입 및 삭제가 가능하다.
③ 후입선출(LIFO) 방식으로, 가장 나중에 쌓은 항목이 가장 먼저 나온다.
④ 데이터의 삽입과 삭제는 스택의 중간에서 이루어진다.

정답: 3
해설: 스택은 후입선출(LIFO, Last In First Out)의 특성을 가지며, 가장 나중에 쌓은 항목이 가장 먼저 나오는 구조를 갖는다.

5. 후위 표기식 계산에 대한 설명으로 올바른 것은?

① 후위 표기식은 연산자가 피연산자 뒤에 위치한다.
② 후위 표기식 계산 시 괄호가 필요하다.
③ 후위 표기식은 연산자 우선 순위를 고려하지 않는다.
④ 후위 표기식은 중위 표기식보다 계산이 복잡하다.

정답: 1
해설: 후위 표기식은 연산자가 피연산자 뒤에 위치하며, 괄호가 필요하지 않고, 연산자 우선 순위를 고려하지 않아도 되는 간단한 계산 방식을 제공한다.

6. 큐의 특징에 대한 설명으로 올바르지 않은 것은?

① 큐는 선입선출(FIFO) 방식으로 작동한다.
② 큐의 삽입은 뒤(rear)에서, 삭제는 앞(front)에서 일어난다.
③ 큐는 중간에 있는 원소를 직접 삭제할 수 있다.
④ 큐는 데이터 스트림을 처리하는데 적합한 자료구조이다.

정답: 3
해설: 큐는 선입선출(FIFO) 방식으로 작동하며, 삽입은 뒤(rear)에서, 삭제는 앞(front)에서 일어난다. 큐는 중간에 있는 원소를 직접 삭제할 수 없다.

7. 자료구조의 중요성에 대한 설명으로 맞는 것은?

① 자료구조는 프로그램의 성능에 영향을 주지 않는다.
② 추상화를 통해 자료의 논리적 관계를 구조화한 것이다.
③ 자료구조는 프로그래밍 언어와 관련이 없다.
④ 모든 자료구조는 동일한 효율성을 가진다.

정답: 2
해설: 자료구조는 추상화를 통해 자료의 논리적 관계를 구조화한 것으로, 프로그램의 효율성과 밀접한 관련이 있다.

8. 희소 행렬에 대한 설명으로 올바른 것은?

① 희소 행렬은 대부분의 원소가 0인 행렬이다.
② 희소 행렬은 메모리 사용량이 많은 행렬이다.
③ 희소 행렬은 계산 처리가 간단하다.
④ 희소 행렬은 모든 원소가 0이 아닌 값을 가진다.

정답: 1
해설: 희소 행렬은 대부분의 원소가 0인 행렬로, 메모리 사용량을 최적화하고 계산 처리가 복잡할 수 있다.

9. 다음 중 배열과 스택의 차이점에 대한 설명으로 맞는 것은?

① 배열과 스택 모두 동적으로 크기를 변경할 수 있다.
② 배열은 인덱스를 통해 직접 접근이 가능하지만, 스택은 후입선출 방식으로 접근한다.
③ 스택은 원소를 양쪽 끝에서 삽입 및 삭제할 수 있다.
④ 배열은 비선형 자료구조이며, 스택은 선형 자료구조이다.

정답: 2
해설: 배열은 인덱스를 통해 직접 접근이 가능한 반면, 스택은 후입선출(LIFO) 방식으로 작동하여 맨 위의 원소만 접근할 수 있다.

10. 큐에서 rear와 front의 관계에 대한 설명으로 올바른 것은?

① 큐에서 rear는 항상 front보다 앞에 위치한다.
② rear는 삽입 연산이 발생하는 위치이며, front는 삭제 연산이 발생하는 위치이다.
③ rear와 front는 항상 같은 위치를 가리킨다.
④ 큐는 rear에서 삽입과 삭제 모두 이루어진다.

정답: 2
해설: 큐에서 rear는 삽입 연산이 이루어지는 위치이며, front는 삭제 연산이 이루어지는 위치를 가리킨다.

11. 정렬 알고리즘의 특징에 대한 설명으로 올바르지 않은 것은?

① 정렬 알고리즘은 데이터를 특정 기준에 따라 순서대로 나열한다.
② 모든 정렬 알고리즘은 동일한 시간 복잡도를 갖는다.
③ 효율적인 정렬 알고리즘은 프로그램의 성능을 향상시킬 수 있다.
④ 다양한 정렬 알고리즘 중에서 특정 상황에 가장 적합한 알고리즘을 선택할 수 있다.

정답: 2
해설: 각 정렬 알고리즘은 다른 시간 복잡도를 갖으며, 상황에 따라 적절한 알고리즘을 선택하는 것이 중요하다.

12. 트리 자료구조의 특징에 대한 설명으로 올바른 것은?

① 트리는 순차적인 접근 방식을 사용한다.
② 모든 트리는 이진 트리 구조를 갖는다.
③ 트리는 계층적 관계를 표현하는 데 적합한 자료구조이다.
④ 트리의 모든 노드는 반드시 두 개의 자식 노드를 가져야 한다.

정답: 3
해설: 트리는 계층적 관계를 나타내는 데 적합한 자료구조이며, 노드 간의 부모-자식 관계를 통해 구조화된다.

13. 희소 행렬의 저장 방식에 대한 설명으로 올바른 것은?

① 희소 행렬은 모든 원소를 저장하는 방식을 사용한다.
② 0이 아닌 원소만을 저장하여 메모리 사용량을 최적화한다.
③ 희소 행렬은 저장 공간을 최소화하기 위해 연결 리스트를 사용하지 않는다.
④ 희소 행렬은 계산 처리가 다른 행렬보다 간단하다.

정답: 2
해설: 희소 행렬은 0이 아닌 원소만을 저장하여 메모리 사용량을 최적화하며, 계산 처리는 일반 행렬보다 복잡할 수 있다.

14. 알고리즘 성능 분석의 중요성에 대한 설명으로 맞는 것은?

① 알고리즘의 성능 분석은 프로그램의 효율성과 관련이 없다.
② 모든 알고리즘은 동일한 성능을 보여준다.
③ 알고리즘 성능 분석을 통해 더 효율적인 프로그램을 설계할 수 있다.
④ 시간 복잡도와 공간 복잡도는 알고리즘 선택에 영향을 주지 않는다.

정답: 3
해설: 알고리즘의 성능 분석은 시간 복잡도와 공간 복잡도를 고려하여 프로그램의 효율성을 향상시키는 데 도움을 준다.

15. 후위 표기식 계산의 원리에 대한 설명으로 올바른 것은?

① 후위 표기식은 괄호를 사용하여 연산자의 우선 순위를 명시한다.
② 후위 표기식 계산은 스택을 사용하지 않고 진행된다.
③ 후위 표기식에서는 연산자가 피연산자 뒤에 오며 스택을 사용하여 계산한다.
④ 후위 표기식은 연산자의 우선 순위를 고려하여 계산 순서를 결정한다.

정답: 3
해설: 후위 표기식에서는 연산자가 피연산자 뒤에 위치하며, 스택을 사용하여 연산자의 우선 순위에 상관없이 계산을 진행한다.

16. 해시 테이블의 작동 원리에 대한 설명으로 올바른 것은?

① 해시 테이블은 선형 검색 방식을 사용한다.
② 모든 데이터는 해시 테이블에서 동일한 메모리 공간을 차지한다.
③ 해시 테이블은 키를 해시 함수를 통해 인덱스로 변환하여 데이터를 저장하거나 검색한다.
④ 해시 테이블은 데이터의 삽입, 삭제, 검색 시 항상 일정한 시간이 걸린다.

정답: 3
해설: 해시 테이블은 키를 해시 함수를 통해 변환된 인덱스를 사용하여 데이터를 저장하거나 검색하며, 이는 빠른 데이터 접근을 가능하게 한다.

17. 이진 트리의 특징에 대한 설명으로 맞는 것은?

① 모든 노드는 최대 두 개의 자식 노드를 가질 수 있다.
② 이진 트리는 순차적 데이터 접근 방식을 사용한다.
③ 모든 이진 트리는 이진 탐색 트리이다.
④ 이진 트리의 모든 레벨은 반드시 가득 차 있어야 한다.

정답: 1
해설: 이진 트리의 각 노드는 최대 두 개의 자식 노드(왼쪽 자식과 오른쪽 자식)를 가질 수 있다.

18. 추상 자료형의 정의에 대한 설명으로 올바른 것은?

① 추상 자료형은 구체적인 데이터 구조를 나타낸다.
② 추상 자료형은 자료와 그 자료에 대한 연산을 포함하지 않는다.
③ 추상 자료형은 자료의 타입과 그 타입에 대한 연산을 추상적으로 정의한다.
④ 모든 추상 자료형은 동일한 연산을 제공한다.

정답: 3
해설: 추상 자료형(ADT)은 데이터의 타입과 그 타입에 대한 연산을 추상적으로 정의하며, 구현 세부 사항을 추상화한다.

19. 자료구조와 알고리즘의 관계에 대한 설명으로 올바른 것은?

① 자료구조는 알고리즘과 무관하다.
② 모든 알고리즘은 동일한 자료구조를 사용한다.
③ 효율적인 알고리즘 구현을 위해서는 적절한 자료구조의 선택이 필요하다.
④ 알고리즘이 자료구조보다 더 중요하다.

정답: 3
해설: 효율적인 알고리즘을 구현하기 위해서는 적절한 자료구조를 선택하는 것이 중요하며, 이는 알고리즘의 성능에 영향을 준다.

20. 배열에서 특정 원소의 인덱스를 찾는 과정으로 올바른 것은?

① 배열의 모든 원소에 접근하여 원하는 값과 일치하는 원소의 인덱스를 찾는다.
② 배열의 첫 번째 원소부터 순차적으로 접근하며 원하는 값을 찾는다.
③ 배열의 마지막 원소부터 역순으로 접근하며 원하는 값을 찾는다.
④ 특정 원소의 인덱스는 배열을 생성할 때 이미 정해진다.

정답: 2
해설: 배열에서 특정 원소를 찾는 과정은 배열의 첫 번째 원소부터 순차적으로 접근하여 원하는 값을 찾는 것이 일반적이다. 배열의 인덱스는 원소의 위치를 나타내므로, 원하는 값의 위치를 찾으면 해당 인덱스가 특정 원소의 인덱스가 된다.

21. 자료의 추상화가 중요한 이유에 대한 설명으로 맞는 것은?

① 추상화는 자료의 세부 사항을 감추어 복잡성을 줄인다.
② 모든 자료는 구체적인 형태로만 표현되어야 한다.
③ 추상화 없이도 소프트웨어 개발은 효율적으로 진행될 수 있다.
④ 자료의 추상화는 프로그램의 성능에 영향을 주지 않는다.

정답: 1
해설: 자료의 추상화는 복잡한 자료를 간단하게 표현하는 과정으로, 중요한 정보만을 강조하면서 복잡성을 줄인다. 이를 통해 프로그래머는 복잡한 내부 구현에 신경 쓰지 않고 데이터를 효과적으로 다룰 수 있다. 추상화는 소프트웨어 설계에서 매우 중요하며, 데이터 구조의 사용과 구현을 분리한다.

22. 스택과 큐의 차이점에 대한 설명으로 올바른 것은?

① 스택은 선입선출(FIFO) 구조이며, 큐는 후입선출(LIFO) 구조이다.
② 스택과 큐 모두 선입선출(FIFO) 구조를 가진다.
③ 스택은 후입선출(LIFO) 구조이며, 큐는 선입선출(FIFO) 구조이다.
④ 스택과 큐 모두 후입선출(LIFO) 구조를 가진다.

정답: 3
해설: 스택은 후입선출(LIFO, Last In First Out) 구조를 가진 자료구조로, 가장 나중에 쌓은 항목이 가장 먼저 나오는 구조를 갖는다. 반면, 큐는 선입선출(FIFO, First In First Out) 구조를 가진 자료구조로, 먼저 쌓은 항목이 가장 먼저 나오는 구조를 갖는다.

23. 재귀 함수를 사용하는 경우와 그 장점에 대한 설명으로 올바른 것은?

① 재귀 함수는 항상 반복문보다 실행 속도가 빠르다.
② 재귀 함수는 복잡한 알고리즘을 간단하고 명확하게

표현할 수 있게 한다.
③ 모든 알고리즘은 재귀 함수를 사용하여 구현될 수 있다.
④ 재귀 함수는 반복문을 사용할 때보다 항상 메모리 사용량이 적다.

정답: 2
해설: 재귀 함수는 복잡한 알고리즘을 간단하고 명확하게 표현할 수 있는 방법이다. 특히, 반복적인 작업을 수행하거나 계산의 깊이가 깊은 문제에서 재귀적 접근 방식은 프로그램을 더 이해하기 쉽게 만들 수 있다. 그러나 재귀 함수의 사용은 실행 속도나 메모리 사용량에 있어서 반복문보다 항상 효율적인 것은 아니다.

24. 알고리즘의 시간 복잡도와 공간 복잡도에 대한 설명으로 올바른 것은?

① 시간 복잡도는 알고리즘을 구현할 때 필요한 코드의 양을 의미한다.
② 공간 복잡도는 알고리즘이 실행될 때 필요한 메모리 공간의 양을 나타낸다.
③ 모든 알고리즘은 동일한 시간 복잡도와 공간 복잡도를 갖는다.
④ 시간 복잡도는 알고리즘의 실행 시간과 관련이 없다.

정답: 2
해설: 공간 복잡도는 알고리즘이 실행될 때 필요한 메모리 공간의 양을 나타내며, 시간 복잡도는 알고리즘이 문제를 해결하는 데 걸리는 시간을 나타낸다. 시간 복잡도와 공간 복잡도는 알고리즘의 효율성을 평가하는 중요한 지표로, 모든 알고리즘은 고유의 시간 복잡도와 공간 복잡도를 갖는다.

25. 연결 리스트에서 노드 삽입 시 고려해야 할 사항은 무엇인가?

① 노드는 항상 리스트의 끝에 삽입해야 한다.
② 삽입할 노드의 데이터만 중요하다.
③ 삽입 위치의 이전과 다음 노드의 링크를 조정해야 한다.
④ 삽입 연산은 무조건 O(1)의 시간 복잡도를 가진다.

정답: ③
해설: 연결 리스트에서 노드를 삽입할 때는 삽입 위치의 이전 노드와 다음 노드의 링크를 적절히 조정해야 한다. 이는 리스트의 연결성을 유지하고 데이터의 정확한 삽입을 보장하는 데 필수적이다.

26. 단순 연결 리스트의 특징 중 올바른 것은?

① 각 노드는 후행 노드만을 가리킨다.
② 각 노드는 선행 노드와 후행 노드 모두를 가리킨다.
③ 단순 연결 리스트에는 노드가 존재하지 않는다.
④ 모든 노드들은 별도의 메모리 주소를 가지지 않는다.

정답: ①
해설: 단순 연결 리스트는 각 노드가 오직 후행 노드만을 가리키는 구조를 갖는다. 따라서 특정 노드를 찾기 위해서는 리스트의 시작부터 순차적으로 탐색해야 한다.

27. 이중 연결 리스트의 주요 장점은 무엇인가?

① 노드 추가 및 삭제 시 메모리를 절약한다.
② 모든 노드가 동일한 메모리 공간을 차지한다.
③ 노드의 순차적 접근이 가능하다.
④ 노드의 선행 및 후행 노드 접근이 용이하다.

정답: ④
해설: 이중 연결 리스트는 각 노드가 이전(선행) 노드와 다음(후행) 노드를 모두 가리킬 수 있어, 양방향으로의 노드 접근이 가능하다. 이는 리스트 내에서의 데이터 조작을 보다 유연하게 만든다.

28. 원형 연결 리스트의 특성에 대한 설명으로 올바른 것은?

① 마지막 노드가 첫 번째 노드를 가리킨다.
② 각 노드는 이전 노드만을 가리킨다.
③ 노드는 순차적으로만 접근 가능하다.
④ 모든 노드는 독립적으로 존재한다.

정답: ①
해설: 원형 연결 리스트에서는 마지막 노드가 다시 첫 번째 노드를 가리키는 구조를 갖는다. 이러한 특성 때문에 리스트의 어느 지점에서 시작하더라도 전체 리스트를 순회할 수 있다.

29. 연결 리스트에서 노드의 삭제 과정을 설명할 때, 올바르지 않은 것은?

① 삭제할 노드의 이전 노드와 다음 노드를 연결한다.
② 삭제할 노드의 메모리를 해제한다.
③ 리스트의 첫 번째 노드를 삭제할 경우, 헤드 포인터를 업데이트한다.
④ 삭제 연산은 항상 O(1)의 시간 복잡도를 가진다.

정답: ④
해설: 연결 리스트에서 특정 노드를 삭제하기 위해서는 먼저 해당 노드를 찾아야 하므로, 삭제 연산의 시간 복잡

도는 항상 O(1)이라고 할 수 없다. 삭제 자체는 O(1)이지만, 삭제할 노드를 찾는 데 O(n)의 시간이 소요될 수 있다.

30. 구조체(struct)의 용도로 가장 적절한 것은?

① 데이터의 메모리 주소를 저장한다.
② 다양한 데이터 타입의 변수를 하나의 단위로 묶는다.
③ 함수의 실행 시간을 측정한다.
④ 프로그램의 오류를 수정한다.

정답: ②
해설: 구조체는 다양한 데이터 타입의 변수들을 하나의 논리적 단위로 묶는 데 사용된다. 이는 데이터의 조직화와 관리를 용이하게 하며, 특히 연결 리스트와 같은 복잡한 데이터 구조를 구현하는 데 유용하다.

31. 연결 리스트에서 포인터의 역할에 대한 설명으로 올바른 것은?

① 모든 노드의 데이터 값을 저장한다.
② 각 노드의 메모리 주소값을 저장한다.
③ 프로그램의 실행 속도를 빠르게 한다.
④ 데이터의 중복을 방지한다.

정답: ②
해설: 연결 리스트에서 포인터는 각 노드의 위치, 즉 메모리 주소값을 저장한다. 이를 통해 노드 간의 연결을 관리하며, 리스트 내에서 데이터를 효율적으로 조작할 수 있게 한다.

32. 배열과 연결 리스트의 주요 차이점은 무엇인가?

① 배열은 메모리를 효율적으로 사용한다.
② 연결 리스트는 데이터 삽입 및 삭제가 배열보다 비효율적이다.
③ 배열은 데이터에 순차적으로 접근한다.
④ 연결 리스트는 논리적 순서에 따라 데이터를 저장한다.

정답: ③
해설: 배열은 데이터에 순차적으로 접근하는 특성을 가지고 있으며, 메모리에 연속적으로 저장된다. 반면, 연결 리스트는 논리적 순서를 유지하지만 물리적으로는 연속적이지 않을 수 있으며, 데이터의 삽입 및 삭제가 배열보다 효율적이다.

컴퓨터 과학 및 자료구조 시험 문제 (기말고사용)

33. 배열 기반 리스트와 포인터 기반 리스트의 차이점 중 하나가 아닌 것은?

① 배열은 고정된 크기를 가진다.
② 포인터 기반 리스트는 메모리 낭비가 적다.
③ 배열 기반 리스트는 메모리 공간을 효율적으로 사용한다.
④ 포인터 기반 리스트는 노드 간 연결을 통해 구현된다.

정답: ③
해설: 배열 기반 리스트는 고정된 크기 때문에 사용하지 않는 메모리 공간이 발생할 수 있어 메모리 공간을 효율적으로 사용한다고 볼 수 없다. 반면, 포인터 기반 리스트는 필요한 만큼의 메모리만 사용하여 더 효율적이다.

34. 이중 연결 리스트에서 노드 삭제의 특징으로 올바른 것은?

① 삭제할 노드를 찾기 위해선 헤드부터 순차적으로 검색한다.
② 삭제 작업은 O(n)의 시간 복잡도를 가진다.
③ 삭제할 노드의 이전과 이후 노드를 모두 조정해야 한다.
④ 삭제할 노드의 메모리를 해제할 필요가 없다.

정답: ③
해설: 이중 연결 리스트에서 노드를 삭제하려면, 삭제할 노드의 이전 노드와 이후 노드를 연결해야 하며, 이 과정에서 두 노드 모두 조정해야 한다. 또한, 삭제된 노드의 메모리는 해제해야 한다.

35. 원형 연결 리스트의 특징에 대한 설명으로 올바르지 않은 것은?

① 마지막 노드가 첫 번째 노드를 가리킨다.
② 리스트 순회 시 시작 노드로 돌아오는 것을 확인해야 한다.
③ 원형 연결 리스트는 단방향 링크만을 가진다.
④ 데이터의 삽입과 삭제가 배열에 비해 시간이 덜 소요된다.

정답: ④
해설: 원형 연결 리스트는 삽입과 삭제 시 특정 노드를 찾기 위한 추가 검색 시간이 필요할 수 있어, 항상 배열보다 시간이 덜 소요된다고 할 수 없다. 특히 리스트의 크기가 클 때 이러한 차이는 더욱 두드러진다.

36. 다음 중 구조체(struct)를 사용하는 이유로 가장 적절하지 않은 것은?

① 다양한 타입의 데이터를 하나의 단위로 묶기 위해서
② 프로그램의 효율성을 높이기 위해
③ 복잡한 데이터 구조를 간단하게 표현하기 위해
④ 메모리를 절약하기 위해서

정답: ④
해설: 구조체를 사용하는 주된 이유는 다양한 타입의 데이터를 하나의 단위로 묶고, 복잡한 데이터 구조를 간단하게 표현하기 위한 것이다. 메모리 절약은 구조체 사용의 직접적인 목적이 아니다.

37. 연결 리스트에서 헤드 포인터의 역할에 대한 설명으로 적절한 것은?

① 모든 노드의 데이터 값을 저장한다.
② 리스트의 첫 번째 노드를 가리킨다.
③ 데이터의 중복을 방지한다.
④ 프로그램의 실행 속도를 빠르게 한다.

정답: ②
해설: 연결 리스트에서 헤드 포인터는 리스트의 첫 번째 노드를 가리키는 역할을 한다. 이를 통해 리스트의 시작점을 알 수 있으며, 리스트의 데이터에 접근하는 데 필수적이다.

38. 다음 중 연결 리스트와 배열의 차이점에 대한 설명으로 가장 부적절한 것은?

① 배열은 인덱스를 통한 빠른 접근이 가능하다.
② 연결 리스트는 노드 간의 물리적 위치가 연속적일 필요가 없다.
③ 연결 리스트는 데이터 삽입과 삭제에 있어 배열보다 효율적이다.
④ 배열은 노드 간의 포인터를 사용하여 구현된다.

정답: ④
해설: 배열은 인덱스를 통해 데이터에 접근하며, 노드 간의 포인터를 사용하지 않는다. 배열은 메모리에 연속적으로 데이터를 저장하는 반면, 연결 리스트는 노드 간의 포인터를 통해 각 노드를 연결한다.

39. 포인터 기반 연결 리스트에서 메모리 할당의 중요성에 대한 설명으로 올바르지 않은 것은?

① 새 노드를 생성할 때마다 메모리를 할당받아야 한다.
② 메모리 할당은 프로그램의 실행 속도에 영향을 미친다.
③ 노드 삭제 시 메모리를 해제하지 않으면 메모리 누수가 발생할 수 있다.
④ 메모리 할당과 해제는 연결 리스트의 구조에 영향을 주지 않는다.

정답: ④
해설: 메모리 할당과 해제는 연결 리스트의 구조와 밀접하게 연관되어 있다. 적절한 메모리 관리 없이는 연결 리스트의 노드가 올바르게 추가되거나 삭제되지 않을 수 있으며, 메모리 누수나 다른 문제를 야기할 수 있다.

40. 배열 기반 리스트의 단점에 대한 설명으로 가장 적절한 것은?

① 데이터의 순차적 접근이 불가능하다.
② 데이터 삽입 및 삭제 시 다른 원소들의 위치 조정이 필요 없다.
③ 메모리 할당의 유연성이 떨어진다.
④ 포인터를 사용하여 데이터 관리를 복잡하게 한다.

정답: ③
해설: 배열 기반 리스트의 주요 단점 중 하나는 메모리 할당의 유연성이 떨어진다는 점이다. 배열은 고정된 크기를 가지며, 크기 변경을 위해서는 새로운 배열을 생성하고 데이터를 복사하는 과정이 필요하다.

41. 이진 트리에서 각 노드의 최대 자식 수는 몇 개인가?

① 1개
② 2개
③ 3개
④ 4개

정답: ②
해설: 이진 트리는 각 노드가 최대 두 개의 자식을 갖는 구조이다.

42. 완전 이진 트리에서 높이가 3일 때 최대 노드 수는?

① 7개
② 8개
③ 15개
④ 16개

정답: ①
해설: 완전 이진 트리에서 높이가 k일 때, 최대 노드 수는 2^k - 1이다. 따라서 높이가 3일 때 최대 노드 수는 2^3 - 1 = 7개이다.

43. 이진 탐색 트리에서 루트 노드보다 작은 값을 갖는 노드는 어디에 위치하는가?

① 오른쪽 서브트리
② 왼쪽 서브트리
③ 루트 노드와 동일한 레벨
④ 위치를 정할 수 없음

정답: ②
해설: 이진 탐색 트리에서는 루트 노드보다 작은 값들을 왼쪽 서브트리에 위치시킨다.

44. 중위 순회에서 루트 노드를 방문하는 순서는?

① 처음
② 마지막
③ 중간
④ 순서가 정해져 있지 않음

정답: ③
해설: 중위 순회는 왼쪽 서브트리를 방문한 후 루트를 방문하고, 마지막으로 오른쪽 서브트리를 순회한다.

45. 힙(Heap)에서 최대힙(max-heap)과 최소힙(min-heap)의 차이는 무엇인가?

① 최대힙은 최소값을, 최소힙은 최대값을 루트로 갖는다.
② 최대힙은 최대값을, 최소힙은 최소값을 루트로 갖는다.
③ 두 힙 모두 최소값을 루트로 갖는다.
④ 두 힙 모두 최대값을 루트로 갖는다.

정답: ②
해설: 최대힙은 루트 노드에 최대값을, 최소힙은 루트 노드에 최소값을 갖는다.

46. AVL 트리에서 균형을 이루기 위한 조건은 무엇인가?

① 모든 노드의 서브트리 높이 차이가 1 이하
② 모든 노드의 서브트리 높이 차이가 2 이하
③ 왼쪽과 오른쪽 서브트리의 높이가 동일
④ 서브트리의 높이에 제한이 없음

정답: ①

해설: AVL 트리는 모든 노드에서 왼쪽과 오른쪽 서브트리의 높이 차이가 1 이하로 유지되어야 한다.

47. B+ 트리의 특징 중 올바르지 않은 것은?

① 모든 키 값이 잎 노드에 존재한다.
② 잎 노드끼리 연결리스트로 연결된다.
③ 잎 노드에는 키 값에 대응하는 실제 데이터가 존재한다.
④ 모든 노드의 키 값 개수는 동일하다.

정답: ④
해설: B+ 트리에서는 각 노드의 키 값 개수가 반드시 동일할 필요는 없다.

48. 그래프 탐색 방법 중 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)의 차이점은?

① DFS는 재귀적으로, BFS는 반복적으로 수행한다.
② DFS는 스택을, BFS는 큐를 사용한다.
③ DFS는 최단 경로를, BFS는 모든 경로를 찾는다.
④ DFS와 BFS의 차이점은 없다.

정답: ②
해설: DFS는 스택이나 재귀를 사용하여 깊이 우선으로 탐색하며, BFS는 큐를 사용하여 너비 우선으로 탐색한다.

49. 이진 트리에서 포인터 기반의 스레드 트리의 장점은 무엇인가?

① 순회가 빠르다
② 메모리 사용량이 적다
③ 구현이 간단하다
④ 노드 추가와 삭제가 쉽다

정답: ①
해설: 스레드 트리는 순회 과정에서 스택이나 재귀 호출 없이 효율적인 순회가 가능하다.

50. 트리에서 노드의 '차수(degree)'는 무엇을 의미하는가?

① 노드의 깊이
② 노드의 높이
③ 노드의 자식 수
④ 트리의 레벨 수

정답: ③
해설: 노드의 차수는 해당 노드가 가진 자식 노드의 수를 의미한다.

51. 이진 트리에서 각 레벨이 최대 노드 수를 갖는 트리를 무엇이라 부르는가?

① 이진 트리
② 가득 찬 이진 트리
③ 완전 이진 트리
④ 불균형 이진 트리

정답: ②
해설: 가득 찬 이진 트리는 각 레벨이 허용되는 최대 노드 수를 가진다.

52. 이진 트리의 전위 순회에서 루트 노드를 방문하는 시점은?

① 루트 노드를 마지막에 방문한다.
② 왼쪽 서브트리 순회 후 방문한다.
③ 오른쪽 서브트리 순회 후 방문한다.
④ 루트 노드를 먼저 방문한다.

정답: ④
해설: 전위 순회는 루트 노드를 먼저 방문한 후, 왼쪽과 오른쪽 서브트리를 순회한다.

53. 이진 탐색 트리의 특징은?

① 모든 노드가 두 개 이상의 자식을 갖는다.
② 노드의 왼쪽 자식은 부모보다 크고, 오른쪽 자식은 부모보다 작다.
③ 노드의 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 크다.
④ 모든 노드의 값이 동일하다.

정답: ③
해설: 이진 탐색 트리에서는 각 노드의 왼쪽 자식이 부모보다 작고, 오른쪽 자식이 부모보다 크다.

54. 스레드 트리의 오른쪽 스레드는 어떤 노드를 가리키는가?

① 선행 노드
② 후속 노드
③ 왼쪽 자식 노드
④ 오른쪽 자식 노드

정답: ②
해설: 스레드 트리에서 오른쪽 스레드는 후속 노드를 가리킨다.

55. 이진 트리의 노드 삽입 과정에서 고려해야 할 사항은?

① 노드는 무작위로 삽입된다.
② 노드는 트리의 균형을 유지하며 삽입된다.
③ 노드 삽입 시 기존의 노드와 관계를 고려하지 않는다.
④ 노드 삽입 시 부모 노드와의 관계를 고려한다.

정답: ④
해설: 이진 트리에 노드를 삽입할 때는 부모 노드와의 관계를 고려해야 한다.

56. 스레드 트리의 중위 순회 과정에서 노드의 데이터 처리 후 다음으로 이동하는 규칙은?

① 왼쪽 자식 노드로 이동한다.
② 오른쪽 자식 노드로 이동한다.
③ 스레드를 통해 다음 노드로 이동한다.
④ 임의의 노드로 이동한다.

정답: ③
해설: 중위 순회에서 노드 처리 후 스레드를 통해 다음 노드로 이동한다.

57. 이진 트리의 노드 삭제 과정에서 자식 노드 처리의 중요성은?

① 자식 노드는 삭제 과정에 영향을 미치지 않는다.
② 삭제할 노드의 자식 노드 처리가 중요하다.
③ 자식 노드는 항상 삭제되어야 한다.
④ 자식 노드 처리는 선택적이다.

정답: ②
해설: 이진 트리에서 노드를 삭제할 때는 해당 노드의 자식 노드 처리가 중요하다.

58. 가중치가 있는 그래프에서 가장 가중치가 적은 간선을 찾는 알고리즘은 무엇인가?

① 프림 알고리즘
② 크루스컬 알고리즘
③ 다익스트라 알고리즘
④ 벨만-포드 알고리즘

정답: ①
해설: 프림 알고리즘은 가중치가 있는 그래프에서 가장 가중치가 적은 간선을 찾는다.

59. 그래프의 사이클이 없는 부분 그래프를 무엇이라 하는가?

① 숲
② 신장 트리
③ 완전 그래프
④ 다중 그래프

정답: ②
해설: 사이클이 없는 부분 그래프는 신장 트리라고 한다.

60. B+ 트리에서 잎 노드의 마지막 포인터가 가리키는 것은 무엇인가?

① 루트 노드
② 다음 키 값을 갖는 노드
③ 부모 노드
④ 이전 키 값을 갖는 노드

정답: ②
해설: B+ 트리에서 잎 노드의 마지막 포인터는 다음 키 값을 갖는 노드를 가리킨다.

61. 이진 트리에서 높이가 4일 때 최소 노드 수는 몇 개인가?

① 4개
② 5개
③ 7개
④ 8개

정답: ①
해설: 이진 트리에서 높이가 k일 때, 최소 노드 수는 k개이다. 따라서 높이가 4일 때 최소 노드 수는 4개이다.

62. AVL 트리의 회전 유형 중 LL 회전은 언제 수행되는가?

① 좌측 서브트리가 오른쪽 서브트리보다 높을 때
② 우측 서브트리가 좌측 서브트리보다 높을 때
③ 좌측 서브트리의 좌측 자식 노드가 균형을 깨트렸을 때
④ 우측 서브트리의 우측 자식 노드가 균형을 깨트렸을 때

정답: ③
해설: AVL 트리에서 LL 회전은 좌측 서브트리의 좌측 자식 노드가 균형을 깨트렸을 때 수행된다.

63. B 트리에서 각 노드의 최소 키 값 개수는 어떻게 결정되는가?

① 노드의 최대 키 값 개수의 절반
② 노드의 최대 키 값 개수의 2배
③ 노드의 레벨 수
④ 고정된 값

정답: ①
해설: B 트리에서 각 노드의 최소 키 값 개수는 노드의 최대 키 값 개수의 절반으로 결정된다.

64. 이진 탐색 트리에서 삭제 연산 후 트리의 재구성이 필요한 경우는?

① 삭제한 노드가 잎 노드인 경우
② 삭제한 노드가 한 개의 자식만 가진 경우
③ 삭제한 노드가 두 개의 자식을 가진 경우
④ 모든 경우

정답: ③
해설: 이진 탐색 트리에서 노드 삭제 후 두 개의 자식을 가진 노드를 삭제하는 경우 트리의 재구성이 필요하다.

65. 그래프 탐색 방법 중 DFS(깊이 우선 탐색)의 특징은 무엇인가?

① 가장 가까운 정점부터 탐색
② 모든 간선을 탐색
③ 가능한 깊숙이 탐색
④ 최단 경로를 찾는 데 사용

정답: ③
해설: DFS는 가능한 한 깊숙이 탐색하는 방법으로, 방문한 정점의 인접 정점 중 방문하지 않은 정점을 선택하여 탐색을 계속한다.

66. 최소 힙(min-heap)의 특징 중 올바른 것은?

① 루트 노드의 값이 최대값이다.
② 모든 노드의 값이 자식 노드보다 크다.
③ 루트 노드의 값이 최소값이다.
④ 잎 노드만 값을 가진다.

정답: ③
해설: 최소 힙에서는 루트 노드의 값이 트리의 모든 노드 중에서 최소값이다.

67. 가중치 그래프에서 최단 경로를 찾는 알고리즘은 무엇인가?

① 프림 알고리즘
② 크루스컬 알고리즘
③ 다익스트라 알고리즘
④ 벨만-포드 알고리즘

정답: ③
해설: 다익스트라 알고리즘은 가중치 그래프에서 주어진 시작 정점으로부터 다른 모든 정점까지의 최단 경로를 찾는 알고리즘이다.

68. 이진 트리에서 두 노드의 가장 가까운 공통 조상을 찾는 방법은?

① 두 노드의 깊이를 비교
② 두 노드의 부모 노드를 추적
③ 두 노드를 후위 순회
④ 두 노드의 값 비교

정답: ②
해설: 이진 트리에서 두 노드의 가장 가까운 공통 조상을 찾기 위해서는 두 노드의 부모 노드를 추적하며 공통 조상을 찾는다.

69. AVL 트리에서 RR 회전은 언제 수행되는가?

① 좌측 서브트리가 오른쪽 서브트리보다 높을 때
② 우측 서브트리가 좌측 서브트리보다 높을 때
③ 우측 서브트리의 우측 자식 노드가 균형을 깨트렸을 때
④ 좌측 서브트리의 좌측 자식 노드가 균형을 깨트렸을 때

정답: ③
해설: AVL 트리에서 RR 회전은 우측 서브트리의 우측 자식 노드가 균형을 깨트렸을 때 수행된다.

70. B 트리에서 노드 분할이 발생하는 경우는 어떤 경우인가?

① 노드의 키 값 개수가 최소 개수보다 적을 때
② 노드의 키 값 개수가 최대 개수보다 많을 때
③ 노드의 키 값 개수가 정확히 중간일 때
④ 노드에 자식이 없을 때

정답: ②
해설: B 트리에서 노드의 키 값 개수가 최대 개수보다 많아지면 노드 분할이 발생한다.

71. 힙에 대한 설명으로 올바른 것은?

① 힙은 자료의 삽입과 삭제가 불가능하다.
② 힙은 순차적으로 데이터를 처리하는 자료구조이다.
③ 힙은 부모 노드가 자식 노드보다 항상 크거나 작은 완전 이진 트리이다.
④ 힙은 노드의 추가와 삭제에 따른 재정렬이 필요 없다.

정답: ③
해설: 힙은 부모 노드가 자식 노드보다 항상 크거나 작은 성질을 가진 완전 이진 트리 구조로, 우선순위 큐의 구현에 사용된다.

72. 승자 트리의 특성에 대한 설명으로 올바른 것은?

① 모든 노드가 자식 노드보다 큰 값을 가진다.
② 루트 노드에는 항상 최대값이 위치한다.
③ 루트 노드에는 항상 최소값이 위치한다.
④ 모든 노드가 자식 노드보다 작은 값을 가진다.

정답: ③
해설: 승자 트리에서는 루트 노드에 항상 최소값이 위치하며, 각 내부 노드는 두 자식 노드 중 작은 값을 선택하여 부모 노드로 올라간다.

73. 이진 탐색 트리에서 키값이 30인 노드를 찾는 과정에서 방문하는 노드의 순서가 50, 35, 32라면, 32번 노드의 왼쪽 자식 노드의 키값은 어떻게 되는가?

① 20 이하
② 31 이상 34 이하
③ 31 이하
④ 35 이상

정답: ①
해설: 이진 탐색 트리에서 노드의 왼쪽 자식은 해당 노드보다 키값이 작으므로, 32번 노드의 왼쪽 자식 노드의 키값은 31 이하가 된다.

74. AVL 트리에서 LL 회전이 필요한 상황은 어떤 경우인가?

① 좌측 서브트리가 오른쪽 서브트리보다 높을 때
② 우측 서브트리가 좌측 서브트리보다 높을 때
③ 좌측 서브트리의 좌측 자식 노드가 균형을 깨트렸을 때
④ 우측 서브트리의 우측 자식 노드가 균형을 깨트렸을 때

정답: ③
해설: AVL 트리에서 LL 회전은 좌측 서브트리의 좌측 자식 노드가 균형을 깨트렸을 때 필요하다.

75. B+ 트리에 대한 설명으로 올바른 것은?

① 모든 키값이 잎 노드에만 존재한다.
② 잎 노드끼리 서로 연결되어 있지 않다.
③ 잎 노드에는 키값이 없다.
④ 내부 노드에는 데이터에 대한 주소가 있다.

정답: ①
해설: B+ 트리에서는 모든 키값이 잎 노드에 있고, 해당 키값에 대응하는 실제 데이터의 주소는 잎 노드에만 존재한다.

76. 가중치 그래프에서 최단 경로를 찾는 알고리즘 중 가장 경로의 합이 최소가 되도록 구성하는 신장 트리를 만드는 알고리즘은?

① 프림 알고리즘
② 크루스컬 알고리즘
③ 다익스트라 알고리즘
④ 벨만-포드 알고리즘

정답: ②
해설: 크루스컬 알고리즘은 가중치 그래프에서 모든 정점을 포함하면서 가중치의 합이 최소가 되는 신장 트리를 찾는 알고리즘이다.

77. 이진 탐색 트리에서 노드 삭제 과정 중, 삭제하려는 노드가 두 개의 자식 노드를 가지고 있을 때, 주로 어떤 노드를 대체 노드로 선택하는가?

① 삭제 노드의 왼쪽 서브트리 중 가장 큰 키를 가진 노드
② 삭제 노드의 오른쪽 서브트리 중 가장 작은 키를 가진 노드
③ 삭제 노드의 왼쪽 서브트리 중 가장 작은 키를 가진 노드
④ 삭제 노드의 오른쪽 서브트리 중 가장 큰 키를 가진 노드

정답: ②
해설: 이진 탐색 트리에서 노드를 삭제할 때, 두 개의 자식을 가진 노드는 오른쪽 서브트리 중 가장 작은 키를 가진 노드로 대체하는 것이 일반적이다.

78. 멀티웨이 탐색 트리에서 노드의 키 값 개수에 대한 설명으로 올바른 것은?

① B트리의 모든 노드는 최소 1개의 키를 가져야 한다.
② B+트리의 잎 노드는 키 값을 가지지 않는다.
③ B*트리는 노드가 꽉 차면 분리하지 않고 키와 포인터를 재배치한다.
④ B트리는 루트 노드가 최소 3개의 서브트리를 가져야 한다.

정답: ③
해설: B*트리에서 노드가 꽉 차면 즉시 분리하지 않고, 먼저 키와 포인터를 재배치하여 다른 형제 노드로 옮기는 방식을 사용한다.

반응형