더북(TheBook)

2. 자주 사용하는 자료 구조의 시간 복잡도

▼ 표 2-2 자주 사용하는 자료 구조에 따른 시간 복잡도

자료 구조

탐색

삽입

삭제

배열

O(n)

O(n)

O(n)

정렬된 배열

O(logn)

O(n)

O(n)

연결 리스트

O(n)

O(1)

O(1)

스택/큐

O(n)

O(1)

O(1)

해시

O(1)

O(1)

O(1)

이진 트리

O(logn)

O(logn)

O(logn)

잠깐만요

연산에서 1초의 기준이란?

문제를 풀다 보면 시간 제한에 걸리곤 합니다. 연산이 비효율적이거나, 입력값과 맞지 않는 알고리즘을 사용했기 때문일 수도 있습니다. 1초에 몇 번까지 연산할 수 있는지 인터넷에서 검색해보면 ‘1억 번 연산에 1초’라는 말을 상당히 많이 볼 수 있습니다. 왜 1억 번일까요? 의외로 굉장히 단순한 이유입니다. CPU가 1초에 1억 번 연산하기 때문입니다.

채점 서버는 물리적 CPU를 바탕으로 연산하고, 코드를 돌리면서 시간 복잡도를 테스트합니다. 따라서 입력 데이터 10만 개를 정렬하는 경우 for 문 2개로 계산하면 O(n2)이므로 10만 X 10만 = 100억 정도의 연산이 발생하고, 이는 곧바로 시간 초과로 이어집니다. 하지만 그와 동시에 ‘시간이 지나면 컴파일러도 더 좋아질 것이고, CPU도 좋아질 테니 시간 여유가 더 생기지 않을까?’라는 생각이 떠오르겠지만 아쉽게도 그렇지 않습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.