[프로그래머스/hash/level2] 전화번호 목록
1. 문제 설명
1. 문자열로 된 전화번호의 접두어를 탐색하기 위해 정렬
을 통해 연관된 내용을 탐색하도록 하는 것이 중요하다.
Arrays.sort(phone_book)
2. 어떤 번호와 다른 번호의 접두어 여부를 판별해야 하므로 String의 startswith
메서드를 사용해야겠다고 생각했다.
3. 해당 방식으로 문제를 접근할 경우, 시간 복잡도는 nlog(n)의 시간 복잡도를 갖는다. 그 이유는 자바에서 지원하는 Arrays.sort(Object[])는 TimSort를 사용해서 nlog(n)을 사용하기 때문이다. (Arrays.sort(int[])는 Quick Sort를 지원한다.)
TimSort
- hybrid stable sorting algorithm, derived from merge sort and insertion sort, designed to perform well on many kinds dof real-world data.
Tim-sort(wikipedia) - 다음에 한번 별도로 학습해봐야겠다.
2. 문제 해결 코드
import java.util.Arrays;
public class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
int index = 0;
while (index < phone_book.length) {
String nowPhoneNumber = phone_book[index];
String nextPhoneNumber = phone_book[index + 1];
if (nextPhoneNumber.startsWith(nowPhoneNumber)) {
return false;
}
index++;
}
return true;
}
}
3. Reference
Author And Source
이 문제에 관하여([프로그래머스/hash/level2] 전화번호 목록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pbg0205/프로그래머스hashlevel2-전화번호-목록저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)