더북(TheBook)

2.6 코딩 인터뷰 예시

면접관이 최선의 정렬 알고리즘을 구하라는 질문을 했다고 가정해 봅시다. 몇몇 면접자는 퀵 정렬 O(nlogn)로 바로 넘어갑니다. 이런, 실수입니다! 문제를 풀기 전에 많은 질문을 해야 합니다.

 

질문 1 데이터의 종류는 무엇입니까? 정수입니까?

답변    네, 정수입니다

질문 2 어느 정도 크기의 데이터를 정렬합니까?

답변    수천 개입니다.

질문 3 데이터는 정확히 무엇입니까?

답변    사람의 나이 데이터입니다.

질문 4 데이터는 어떤 자료 구조로 저장되어 있습니까?

답변    데이터는 리스트 형태로 제공됩니다.

질문 5 주어진 자료 구조를 수정할 수 있습니까? 그리고 ... ?(추가로 다른 질문을 합니다)

답변    아니요, 제공된 자료 구조는 수정할 수 없습니다.

 

첫 번째 답변에서 데이터가 정수라는 것을 알 수 있습니다. 데이터는 그리 크지 않으며, 수천 개의 항목만 들어 있습니다. 세 번째 답이 흥미롭습니다. 여기서 데이터의 범위가 1~150이라고 추론합니다. 데이터는 리스트의 형태로 제공됩니다. 다섯 번째 답에서 자신의 데이터 구조를 만들고 주어진 배열은 수정할 수 없음을 추론합니다. 마지막으로 버킷 정렬(bucket sort)을 사용해 데이터를 정렬할 수 있다고 결론을 내립니다. 범위가 1~150이기 때문에 크기 151의 리스트만 있으면 됩니다. 데이터가 수천 개 이하라서 데이터 오버플로를 걱정할 필요가 없으며, 선형 시간 O(n)의 해결책을 가집니다.

Note ≡


정렬은 4장에서 알아봅니다.

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