function solution(phone_book) {
// 전화번호 목록 사전 순 정렬
phone_book.sort();
// 각 번호를 바로 다음 번호와 비교
for (let i = 0; i < phone_book.length - 1; i++) {
if (phone_book[i + 1].startsWith(phone_book[i])) {
return false;
}
}
return true;
}
이 문제는 주어진 전화번호 목록에서 어떤 번호가 다른 번호의 접두어인지 확인하는 문제다.
전화번호 목록의 길이가 최대 1,000,000이므로, 효율적인 검사 방법이 필수.
가장 효과적인 접근 방법 중 하나는 전화번호 목록을 먼저 사전 순으로 정렬하는 것.
이렇게 하면 접두어 관계에 있는 번호들이 서로 인접하게 된다.
따라서 각 번호를 바로 다음 번호와만 비교하여 접두어 관계를 검사할 수 있다.
접근 방법:
1.전화번호 목록을 사전 순으로 정렬.
2.각 번호를 바로 다음 번호와 비교하여 접두어 관계인지 확인.
3.접두어 관계가 발견되면 즉시 false를 반환.
4.모든 검사가 끝나면 true를 반환.
이 코드는 각 번호를 그 다음 번호와만 비교하기 때문에 시간 복잡도는 O(N log N)이다(정렬 때문에 ㅡㅡ),
하여 주어진 제한 사항 내에서 충분히 효율적이라고 생각한다.
열심히 1일 1커밋을 코테로 채운지 어언 5개월쯤 된거같다.
이력서도 계속 넣고있다.
하지만 내 깃헙의 조회수는 전혀 올라가지않는다.
1일 1커밋이든 내가 문제 풀이를 어떤식으로 하든지 관심조차 주지않는 이력서라는 의미인걸까?
점점 회의감이 든다.
컴공과에 편입까지하며 불태운 내 의지가 촛불의 위태로운 불빛마냥 흔들린다. ㅎㅎ