어제 한 스타트업 면접을 봤는데 이 문제가 라이브 코딩 인터뷰 문제로 나왔다.
처음엔 2 sorted arrays를 merge하라고 해서 merge sort 알고리즘에서 merge하듯이 구현했다.
근데 그 다음엔 3개의 sorted arrays를 merge해보라고 해서 혹시 3개만 하면 되는건지
array가 k개로 더 많아질 수 있는건지를 물어봤더니
"어.. 사실 뒤에 문제가 k개를 merge하는 거였어요. 바로 풀어볼래요?"
라고 하셔서 바로 풀어보겠다고 했다. (어차피 3개 array 해봤자 크게 달라질것도 없고 시간낭비일거같아서)
naive하게 풀면 k * k * n일거같다. (k개의 요소중 작은 걸 셀렉하는걸 k*n번 해야되니까. 각 array의 길이는 모두 n이다)
근데 min값 셀렉하는걸 heap일 이용해서 하면 log k로 줄일수있을거같다는 생각이 문득 들어서 라이브로 구현했고
잘 푼거같다.
k * n * log k로 구현 가능
'코딩 테스트 및 알고리즘 > 혼자서 이것저것 풀어보기' 카테고리의 다른 글
longest increasing subsequence 구현하기 (0) | 2022.04.26 |
---|---|
간단하게 tdd하면서 combinations 구현해보기 (0) | 2022.03.28 |
graycode 시퀀스 출력하기 (0) | 2022.03.26 |
광고 삽입 (2021 카카오 기출) (0) | 2022.03.24 |
신규 아이디 추천 (2021 카카오 기출) (0) | 2022.03.23 |