반응형

✅ 퀴즈 1
연결 리스트(Linked List)의 주요 특징으로 옳지 않은 것은?
- 동적 메모리 할당이 가능하다.
- 중간 삽입 및 삭제가 배열보다 효율적이다.
- 노드는 서로 독립적으로 존재하며 연결될 필요가 없다.
- 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성된다.
✅ 퀴즈 2
다음 코드가 출력하는 결과는 무엇인가?
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
last = self.head
while last.next:
last = last.next
last.next = new_node
def print_list(self):
temp = self.head
while temp:
print(temp.data, end=' → ')
temp = temp.next
print("None")
llist = LinkedList()
llist.append(1)
llist.append(2)
llist.append(3)
llist.print_list()
- 1 → 2 → 3 → None
- 3 → 2 → 1 → None
- None → 1 → 2 → 3
- 1 → None → 2 → None → 3 → None
✅ 퀴즈 3
연결 리스트에서 노드를 삭제할 때, 올바른 과정이 아닌 것은?
- 삭제할 노드의 이전 노드를 찾아야 한다.
- 삭제할 노드가 가리키고 있는 다음 노드를 이전 노드가 가리키도록 변경해야 한다.
- 삭제할 노드의 데이터를 None으로 바꾸면 자동으로 삭제된다.
- 마지막 노드를 삭제할 경우, 이전 노드의 next 포인터를 None으로 설정해야 한다.
✅ 퀴즈 4
이중 연결 리스트(Doubly Linked List)와 단일 연결 리스트(Singly Linked List)의 차이점으로 올바른 것은?
- 단일 연결 리스트는 각 노드가 이전 노드와 다음 노드를 가리키지만, 이중 연결 리스트는 다음 노드만 가리킨다.
- 이중 연결 리스트는 각 노드가 prev와 next 포인터를 가지며, 양방향 탐색이 가능하다.
- 단일 연결 리스트는 삽입과 삭제가 더 효율적이다.
- 이중 연결 리스트는 마지막 노드가 첫 번째 노드를 가리켜 순환 구조를 가진다.
✅ 퀴즈 5
연결 리스트에서 중간에 노드를 삽입할 때, 올바른 과정은?
- 새로운 노드를 만들고, 기존 노드의 next 포인터를 새로운 노드로 변경한다.
- 새로운 노드를 만들고, 기존 노드가 가리키던 노드를 새로운 노드의 next 포인터로 연결한 뒤, 기존 노드의 next를 새로운 노드로 설정한다.
- 새로운 노드를 만들고, 기존 노드의 데이터를 새로운 데이터로 변경한다.
- 새로운 노드를 만들고, 아무 위치에 추가하면 자동으로 리스트가 정렬된다.
🔍 정답 및 해설
✅ 퀴즈 1 정답: 3번 (노드는 서로 연결되어야 한다.)
💡 해설:
- 연결 리스트는 각 노드가 서로 연결되어야 하며, 독립적으로 존재하는 것이 아닙니다.
- 각 노드는 데이터와 다음 노드를 가리키는 포인터(next) 로 구성됩니다.
✅ 퀴즈 2 정답: 1번 (1 → 2 → 3 → None)
💡 해설:
- append() 함수는 연결 리스트의 끝에 데이터를 추가하는 역할을 합니다.
- print_list() 함수는 연결 리스트의 모든 데이터를 출력하는 함수입니다.
- 따라서 1 → 2 → 3 → None이 출력됩니다.
✅ 퀴즈 3 정답: 3번 (노드 데이터를 None으로 바꾼다고 삭제되지 않음)
💡 해설:
- 연결 리스트에서 노드를 삭제하려면, 이전 노드가 삭제할 노드의 다음 노드를 가리키도록 변경해야 합니다.
- 단순히 데이터를 None으로 변경하는 것은 삭제와 무관합니다.
✅ 퀴즈 4 정답: 2번 (이중 연결 리스트는 prev와 next 포인터를 가짐)
💡 해설:
- **이중 연결 리스트(Doubly Linked List)**는 각 노드가 이전 노드(prev)와 다음 노드(next) 포인터를 모두 포함합니다.
- 따라서 양방향 탐색이 가능하며, 특정 노드 삭제 시 더 효율적입니다.
✅ 퀴즈 5 정답: 2번 (기존 노드의 next를 새로운 노드로 연결한 뒤, 새로운 노드가 원래 연결된 노드를 가리켜야 함)
💡 해설:
- 중간 삽입 시 새로운 노드는 기존 노드의 next를 가리켜야 하며, 기존 노드의 next 포인터를 새로운 노드로 변경해야 합니다.
- 즉, 새로운 노드를 중간에 넣는다면 기존 노드의 next를 새로운 노드로 업데이트하고, 새로운 노드의 next가 기존의 다음 노드를 가리켜야 합니다.
➡ 연결 리스트는 배열보다 삽입/삭제 연산이 효율적인 자료구조이므로, 다양한 문제에 적용할 수 있습니다. 코드 구현 연습을 통해 개념을 확실히 익혀보세요! 🚀
반응형
'IT > algorithm' 카테고리의 다른 글
[Python] 알고리즘 개념9 퀴즈 - 재귀 함수의 스택 메커니즘 (0) | 2025.02.23 |
---|---|
[Python] 알고리즘 개념9 - 재귀 함수의 스택 메커니즘 (0) | 2025.02.23 |
[Python] 알고리즘 개념8 퀴즈 - 큐 (0) | 2025.02.21 |
[Python] 알고리즘 개념7 퀴즈 - 스택 (0) | 2025.02.21 |
[Python] 알고리즘 개념5 퀴즈 - 동적 프로그래밍(DP) (0) | 2025.02.20 |
[Python] 알고리즘 개념8 - 큐(Queue) (0) | 2025.02.20 |
[Python] 알고리즘 개념7 - 스택(Stack) (0) | 2025.02.20 |
[Python] 알고리즘 개념6 - 연결 리스트 (Linked List) (0) | 2025.02.20 |
댓글