반응형

📌 퀴즈 개요
이 퀴즈는 "시간복잡도 & 공간복잡도" 개념을 더욱 깊이 이해하기 위한 추가 문제들로 구성되어 있습니다. 각 문제의 답을 선택하거나 직접 작성해보세요!
🧩 1. 개념 이해 문제
❓ 문제 1
다음 중 공간복잡도가 가장 낮은 연산은?
- 크기가 n인 리스트를 선언하고 초기화하기
- 크기가 n인 리스트를 정렬하기
- 크기가 n인 리스트를 한 번 순회하기
- 크기가 n인 리스트를 사용하지 않고 단일 변수로 계산하기
❓ 문제 2
Big-O 표기법에서 가장 비효율적인 시간복잡도는?
- O(n)
- O(log n)
- O(n^2)
- O(n!)
🧩 2. 실전 문제
❓ 문제 3
다음 코드에서 get_sum(n) 함수의 시간복잡도는?
def get_sum(n):
total = 0
for i in range(n):
total += i
return total
- O(1)
- O(n)
- O(n^2)
- O(log n)
❓ 문제 4
다음 코드에서 리스트의 특정 요소를 삭제하는 연산 del arr[k]의 시간복잡도는?
arr = [1, 2, 3, 4, 5]
del arr[2]
- O(1)
- O(n)
- O(log n)
- O(n^2)
❓ 문제 5
공간복잡도를 최적화하는 가장 좋은 방법은?
- 중복 데이터를 여러 번 저장한다.
- 리스트 대신 딕셔너리를 사용한다.
- 제너레이터(generator)를 사용하여 데이터를 한 번에 하나씩 처리한다.
- 모든 데이터를 한 번에 메모리에 로드한다.
🏆 정답 및 해설
✅ 문제 1 정답: 4)
- 단일 변수를 사용하는 것이 가장 적은 공간을 차지합니다.
✅ 문제 2 정답: 4)
- O(n!)은 가장 비효율적인 복잡도로, 입력 크기가 커질수록 연산량이 기하급수적으로 증가합니다.
✅ 문제 3 정답: 2)
for i in range(n): # n번 반복 수행
total += i # O(1) 연산
- 반복문이 n번 실행되므로 O(n)입니다.
✅ 문제 4 정답: 2)
del arr[2] # 리스트 요소 삭제 시 나머지 요소들이 이동해야 하므로 O(n)
- 리스트 중간에서 삭제하면 뒤의 요소들을 이동해야 하므로 O(n)입니다.
✅ 문제 5 정답: 3)
def generate_numbers():
for i in range(100):
yield i # 데이터를 한 번에 하나씩 처리하여 메모리 사용 절약
- 제너레이터를 사용하면 메모리를 절약하면서 데이터를 처리할 수 있습니다.
반응형
'IT > algorithm' 카테고리의 다른 글
[Python] 알고리즘 개념7 - 스택(Stack) (0) | 2025.02.20 |
---|---|
[Python] 알고리즘 개념6 - 연결 리스트 (Linked List) (0) | 2025.02.20 |
[Python] 알고리즘 개념5 - 동적 프로그래밍 (DP) (0) | 2025.02.20 |
[Python] 알고리즘 개념2 추가 퀴즈 - Big-O 표기법 심화 (0) | 2025.02.20 |
[Python] 알고리즘 개념4 퀴즈 - 재귀와 백트래킹 (0) | 2025.02.20 |
[Python] 알고리즘 개념4 - 재귀와 백트래킹 (0) | 2025.02.20 |
[Python] 알고리즘 개념2 퀴즈 - Big-O 표기법 심화 (0) | 2025.02.20 |
[Python] 알고리즘 개념1 퀴즈 - 시간복잡도 & 공간복잡도 (0) | 2025.02.20 |
댓글