Programmers_42577 전화번호 목록
- TOC {:toc}
이 글은 프로그래머스의 42577번 문제를 JavaScript로 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2023.11.14
정확성 테스트
테스트 | 통과 | 시간 | 메모리 |
---|---|---|---|
테스트 1 | 통과 | 0.05ms | 33.6MB |
테스트 2 | 통과 | 0.05ms | 32.8MB |
테스트 3 | 통과 | 0.05ms | 32.9MB |
테스트 4 | 통과 | 0.04ms | 33.5MB |
테스트 5 | 통과 | 0.05ms | 33.4MB |
테스트 6 | 통과 | 0.05ms | 33.5MB |
테스트 7 | 통과 | 0.05ms | 33.6MB |
테스트 8 | 통과 | 0.05ms | 33.5MB |
테스트 9 | 통과 | 0.05ms | 33.6MB |
테스트 10 | 통과 | 0.06ms | 33.4MB |
테스트 11 | 통과 | 0.06ms | 33.5MB |
테스트 12 | 통과 | 0.05ms | 33.5MB |
테스트 13 | 통과 | 0.05ms | 33.4MB |
테스트 14 | 통과 | 0.45ms | 33.5MB |
테스트 15 | 통과 | 0.58ms | 33.7MB |
테스트 16 | 통과 | 0.62ms | 33.7MB |
테스트 17 | 통과 | 0.80ms | 33.8MB |
테스트 18 | 통과 | 1.82ms | 33.9MB |
테스트 19 | 통과 | 1.01ms | 34MB |
테스트 20 | 통과 | 1.54ms | 33.9MB |
효율성 테스트
테스트 | 통과 | 시간 | 메모리 |
---|---|---|---|
테스트 1 | 통과 | 3.86ms | 34.9MB |
테스트 2 | 통과 | 3.87ms | 34.8MB |
테스트 3 | 통과 | 151.92ms | 78.4MB |
테스트 4 | 통과 | 117.43ms | 74.4MB |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
풀이 생각 | 18:52:22 | 18:54:12 | |
코딩 | 23:25:04 | 23:44:47 |
function solution(phone_book) {
phone_book.sort();
return phone_book.some((num, i) => num === phone_book[i + 1]?.slice(0, num.length))
? false
: true;
}
아이디어 & 풀이
전화번호를 sort
로 정렬하면 특정 전화번호와 해당 전화번호를 접두사로 갖는 전화번호는 인접하게 존재하게 된다. 이를 이용해 인접한 두 전화번호를 비교해 한 전화번호가 다른 전화번호의 접두사인지 확인한다.
- 접두사로 쓰일 더 짧은 전화번호가 앞에 존재하므로 뒷 전화번호를 앞 전화번호의 길이만큼 잘라서 비교한다.
some
메소드를 사용해 다른 전화번호를 접두사로 갖는 전화번호가 하나라도 존재하면false
를 반환하도록 한다.
-
ps-js