시간 복잡도는 프로그램이나 알고리즘이 실행되는 데 걸리는 시간의 양을 말해요. 이 시간은 입력되는 데이터의 크기(N)에 따라 달라질 수 있어요. 시간 복잡도를 쉽게 이해할 수 있게, 초등학생 수준에서 설명해볼게요.
시간 복잡도의 종류
-
O(1) - 상수 시간(Constant Time)
- 설명: 입력 크기(N)에 상관없이 항상 같은 시간이 걸려요.
- 예시: 서랍장에서 첫 번째 서랍을 여는 것. 몇 개의 서랍이 있든지 항상 첫 번째 서랍을 여는 데 걸리는 시간은 똑같아요.
- 그림: 서랍장에 서랍이 몇 개든지 첫 번째 서랍을 여는 시간은 같아요.
-
O(N) - 선형 시간(Linear Time)
- 설명: 입력 크기(N)에 비례해서 시간이 걸려요.
- 예시: 책상에 쌓인 책을 하나씩 차례대로 찾는 것. 책이 많아질수록 찾는 시간이 더 오래 걸려요.
- 그림: 책이 한 권 있을 때와 열 권 있을 때 찾는 시간의 차이가 커요.
-
O(log N) - 로그 시간(Logarithmic Time)
- 설명: 입력 크기(N)가 커질수록 시간이 조금씩만 더 걸려요.
- 예시: 전화번호부에서 이름을 찾는 것. 중간부터 시작해서 반씩 줄여가며 찾으면 빨리 찾을 수 있어요.
- 그림: 큰 전화번호부를 반씩 줄여가며 찾는 모습.
-
O(N^2) - 이차 시간(Quadratic Time)
- 설명: 입력 크기(N)의 제곱에 비례해서 시간이 걸려요.
- 예시: 반 친구들 모두와 악수하는 것. 한 명이 30명의 친구와 각각 악수하려면 총 30 * 30번의 악수가 필요해요.
- 그림: 모두가 서로 악수하는 모습을 상상해보세요.
예시를 통한 설명
-
O(1) - 상수 시간
- 예: 책상 서랍에서 딱 한 권의 책을 꺼내는 것. 서랍이 몇 개든 상관없이 한 서랍에서 책을 꺼내는 데 걸리는 시간은 같아요.
-
O(N) - 선형 시간
- 예: 책 더미에서 원하는 책을 찾는 것. 책이 많을수록 찾는 데 시간이 오래 걸려요. 한 권씩 찾아봐야 하니까요.
-
O(log N) - 로그 시간
- 예: 정렬된 책 더미에서 원하는 책을 찾는 것. 중간부터 시작해서 반씩 줄여가며 찾으면 금방 찾을 수 있어요.
-
O(N^2) - 이차 시간
- 예: 반 친구들 모두와 인사하기. 한 명이 모두와 인사하고, 또 다른 한 명이 모두와 인사하면, 인사하는 횟수가 급격히 늘어나요.
간단한 도표
시간 복잡도 | 설명 | 예시 |
---|
O(1) | 항상 같은 시간 | 첫 번째 서랍을 여는 시간 |
O(N) | 데이터가 많아질수록 시간이 늘어남 | 책 더미에서 책 찾기 |
O(log N) | 데이터가 많아져도 시간이 조금만 늘어남 | 전화번호부에서 이름 찾기 |
O(N^2) | 데이터가 많아지면 시간이 급격히 늘어남 | 반 친구들과 모두 인사하기 |
이렇게 시간 복잡도를 이해하면, 프로그램이 얼마나 효율적인지, 얼마나 빨리 실행될 수 있는지 알 수 있어요.