본문 바로가기
IT/algorithm

[Python] 알고리즘 개념3 퀴즈 - 배열과 리스트

by Echinacea 2025. 2. 20.
반응형

 

 

📌 퀴즈 개요

이 퀴즈는 "배열과 리스트" 개념을 이해하고 있는지 확인하기 위한 문제들로 구성되어 있습니다. 각 문제의 답을 선택하거나 직접 작성해보세요!


 

 

🧩 1. 개념 이해 문제

 

❓ 문제 1

배열(Array)과 리스트(List)의 주요 차이점이 아닌 것은?

  1. 배열은 연속된 메모리를 사용하지만, 리스트는 동적 메모리를 할당한다.
  2. 배열은 같은 타입의 데이터만 저장할 수 있지만, 리스트는 다양한 타입을 저장할 수 있다.
  3. 리스트는 정적 크기를 가지며, 크기를 변경할 수 없다.
  4. 배열은 크기 변경이 어렵지만, 리스트는 크기 조절이 가능하다.

 

❓ 문제 2

Python 리스트의 시간복잡도가 O(1) 이 아닌 연산은?

  1. 리스트의 마지막에 요소 추가 (append())
  2. 리스트의 특정 위치에 요소 삽입 (insert())
  3. 리스트의 길이 확인 (len())
  4. 리스트의 마지막 요소 삭제 (pop())

 

 

🧩 2. 실전 문제

 

❓ 문제 3

다음 코드 실행 결과는?

arr = [1, 2, 3, 4, 5]
arr.insert(2, 10)
print(arr)
  1. [1, 2, 3, 10, 4, 5]
  2. [1, 2, 10, 3, 4, 5]
  3. [10, 1, 2, 3, 4, 5]
  4. [1, 2, 3, 4, 5, 10]

 

❓ 문제 4

다음 코드의 실행 시간복잡도는?

arr = [1, 2, 3, 4, 5]
del arr[2]
  1. O(1)
  2. O(n)
  3. O(log n)
  4. O(n^2)

 

❓ 문제 5

리스트의 효율적인 삽입/삭제를 위해 collections.deque를 사용해야 하는 이유는?

  1. 리스트보다 메모리를 적게 사용하기 때문이다.
  2. 리스트보다 요소 접근 속도가 빠르기 때문이다.
  3. 양쪽 끝에서 O(1) 시간 내 삽입/삭제가 가능하기 때문이다.
  4. 리스트보다 요소 추가가 불가능하기 때문이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

🏆 정답 및 해설

✅ 문제 1 정답: 3)

  • 리스트는 동적 크기 조정이 가능하며, 크기가 고정되지 않습니다.

✅ 문제 2 정답: 2)

arr.insert(2, 10)  # O(n) (요소 삽입 시 나머지 요소 이동 필요)
  • insert()는 리스트 중간에 요소를 추가하면 나머지 요소들을 이동해야 하므로 O(n)입니다.

✅ 문제 3 정답: 2)

arr = [1, 2, 3, 4, 5]
arr.insert(2, 10)  # 인덱스 2 위치에 10 삽입
print(arr)  # [1, 2, 10, 3, 4, 5]

✅ 문제 4 정답: 2)

del arr[2]  # 리스트에서 요소 삭제 시, 뒤 요소들이 앞으로 이동해야 함 (O(n))
  • 리스트의 특정 요소를 삭제하면 뒤의 요소들이 앞으로 이동해야 하므로 O(n)입니다.

✅ 문제 5 정답: 3)

from collections import deque

dq = deque([1, 2, 3, 4])
dq.appendleft(0)  # O(1)
dq.popleft()  # O(1)
  • deque는 양쪽 끝에서 O(1) 시간 내에 삽입/삭제가 가능합니다. 반면 리스트는 중간 삭제 시 O(n)이 걸립니다.

 

반응형

댓글