1. 복잡도란?


2. 시간 복잡도 (Time Complexity)

👉 프로그램이 실행될 때 걸리는 시간이 입력 크기에 따라 어떻게 늘어나는지를 보는 것.

예시:

→ 실행 횟수가 입력 크기 N에 비례하니까

이런 걸 O(N)이라고 적어요.

여기서 O는 "order of"(크기 정도)라는 의미예요.


3. 공간 복잡도 (Space Complexity)

👉 프로그램이 실행될 때 메모리를 얼마나 차지하는지 보는 것.


4. 자주 쓰이는 복잡도 예시

즉, **복잡도(Complexity)**는 "입력이 커질수록 실행 시간이 얼마나 늘어나는가?"를 수학적으로 표현하는 거예요.

쉽게 비유하면:

👉 그래서 알고리즘 문제를 풀 때는 "이 코드가 입력이 엄청 커졌을 때도 빠르게 동작할까?"를 보는 거예요.

5. 복잡도 비교하기

입력 크기에 따른 각 복잡도별 실행 시간 비교:

입력 크기 (N) O(1) O(log N) O(N) O(N log N) O(N²) O(2^N)
10 1 3 10 30 100 1,024
100 1 7 100 700 10,000
1,000 1 10 1,000 10,000 1,000,000
1,000,000 1 20 1,000,000 20,000,000 10^12

👉 이 표를 보면 알 수 있듯이, 복잡도에 따라 처리 시간의 차이가 엄청나게 커질 수 있어요.

6. 알고리즘 선택 시 고려사항

7. 실전 적용 예시

문제: 배열에서 특정 값 찾기

👉 입력 크기가 클수록 효율적인 알고리즘의 중요성이 커집니다. 웬만한 코딩 테스트에서는 시간 제한이 있기 때문에 복잡도를 고려한 알고리즘 선택이 매우 중요해요!