🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42577
✏️ 풀이
function solution(phone_book) {
return !phone_book
.sort()
.some((number, index) =>
index === phone_book.length - 1
? false
: phone_book[index + 1].startsWith(number)
);
}
모든 전화번호를 자신을 제외한 나머지 다른 번호와 비교하는 것은 n^2로 시간복잡도가 크기 때문에 오름차순 정렬하여 붙어 있는 인덱스의 요소들을 비교하였다. 문자열 오름차순 정렬을 했을 때 phone_book[n]이 만약 어떠한 전화번호의 접두사라면, phone_book[n]은 반드시 phone_book[n + 1]의 접두사가 된다. 따라서 이러한 방식으로 전체 전화번호 중에서 접두사의 존재 여부를 확인할 수 있다.
'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 Level 1] 대충 만든 자판 - JavaScript (0) | 2024.08.04 |
---|---|
[프로그래머스 Level 1] 개인정보 수집 유효기간 - JavaScript (0) | 2024.05.19 |
[프로그래머스 Level 2] 덧칠하기 - JavaScript (0) | 2023.03.03 |
[프로그래머스 Level 3] 베스트앨범 - JavaScript (0) | 2023.03.01 |
[프로그래머스 Level 2] 소수 찾기 - JavaScript (0) | 2023.02.27 |