Skip to content

문제 1 · 덱의 findKth 시간복잡도

문제 1 [1점]

양방향 큐(덱)double ended queue; deque에서 k번째 원소를 찾는 연산(findKth)의 시간복잡도는 얼마인지 쓰시오.

풀이 및 해설

덱의 강점은 양쪽 끝에서의 삽입·삭제가 각각 O(1)이라는 점입니다. 그러나 "앞에서 k번째"에 해당하는 임의 위치의 원소를 찾으려면, 덱이 보통 이중 연결 리스트로 구현되어 있어 한쪽 끝에서부터 링크를 따라 한 칸씩 이동해야 합니다.

  • 원하는 원소에 도달하기까지 k번의 이동이 필요하고, 최악의 경우 kN이므로 선형 시간이 듭니다.
findKth=O(N)

참고로, 덱을 **동적 배열(순환 배열)**로 구현하면 인덱스로 곧바로 접근할 수 있어 findKthO(1)이 됩니다. 즉 시간복잡도는 구현 방식에 좌우되며, 연결 리스트 기반 구현에서는 O(N)입니다.

PDF