1. 시간 복잡도와 공간 복잡도의 정의와 차이를 설명해보세요.
시간 복잡도는 알고리즘이 실행되는 동안 수행하는 연산 횟수의 총량을 나타내고, 공간 복잡도는 알고리즘이 실행되는 동안 필요한 추가 메모리의 양을 나타낸 것입니다. 즉, 얼마나 빨리 실행 되는 지, 얼마나 많은 메모리를 쓰는지의 차이입니다.
2. Big-O 표기법이 무엇이고 왜 쓰나요?
빅오 표기법은 복잡도를 표기하는 표기법입니다. 구현 환경이나 상수에 상관없이 알고리즘의 성능을 비교할 수 있기 때문에 주로 사용합니다.
3. Big-O, Big-Theta, Big-Omega의 차이를 설명해보세요.
Big-O는 알고리즘의 최악의 경우 얼마나 느려질 수 있는지는 나타내며, 상한선을 의미합니다.
Big-Omega는 반대로 최선의 경우 얼마나 빠를 수 있는지를 나타내며, 하한선을 의미합니다.
Big-Theta는 평균적인 성장률을 의미합니다
👉왜 빅오는 최악 기준으로 많이 쓰나요?
→ 실무에서는 성능을 보장해야 하기 때문에 최악의 경우를 기준으로 설명하는 것이 안전합니다.
4. 복잡도의 예시를 들어보세요.
👉해시맵은 평균 O(1)인데 왜 최악은 O(n)인가요?
→ 해시맵 충돌이 모두 같은 버킷에 몰리면 연결리스트 탐색이 필요하기 때문입니다.
연결리스트 탐색은 복잡도가 O(n)이므로 해시맵의 최악은 O(n)입니다.
5. 공간 복잡도가 O(1)과 O(n)의 차이를 예시로 설명해보세요.
6. 선형 탐색과 이진 탐색의 시간 복잡도는?
7. 재귀 vs 반복 (시간/공간 복잡도)
👉재귀는 반복문보다 불리한데 왜 씁니까?
→ 코드가 간결하고 문제 구조를 직관적으로 표현할 수 있다는 장점이 있어 사용합니다.
8. 정렬 알고리즘 중 평균적으로 O(n log n)을 보장하는 것은 어떤 것들이 있나
요?
👉 왜 퀵 정렬은 평균 O(n log n)인데 최악은 O(n²)인가요?
→ 분할이 불균형하게 일어나면 재귀 깊이가 n까지 가므로 O(n²)까지 가게됩니다.
9. 공간 복잡도 최적화를 위해 어떤 기법들을 사용할 수 있나요?