...
문제 : 전화번호 목록
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.
전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.
전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.
phone_book의 길이는 1 이상 1,000,000 이하입니다.
각 전화번호의 길이는 1 이상 20 이하입니다.
같은 전화번호가 중복해서 들어있지 않습니다.
하핳^^ 이건 잘푼 코드가 맞는 것 같다 ㅋㅋㅋㅋㅋㅋㅋ
문제를 풀고 나서 해설을 보니 나랑 다른 코드는
if (phone_book[i + l].startsWith(phone_book[i] ) ) 이부분 이었다. 나는 진짜 살다살다 startsWith라는 메서드를 본 적이 없었는데,,, 뭐 오늘 봤고, 이제 알았으면 되는거지!! 앞으로 startWith 와 같이 몰랐던 메서드들을 잘 사용하면 Javascript로도 알고리즘을 더 잘 해결할 수 있을 것 같다는 생각이 들었다!
사실 숫자로 된 문자열을 sort하면 정렬 방식이 숫자크기가 아닌, string순서로 된다는 것을 혼자 생각하고 난 천재야 하면서 신나했는데 기본으로 다들 쓰는 것 같아서 아쉬웠지만 그래도 어쨌든 적어도 다른 사람들과 같은 사고방식을 했다는 것 만으로도 충분히 뿌듯했다~
function solution(phone_book) {
const new_pb = phone_book.sort();
for (let i = 0; i < new_pb.length - 1; i++) {
if (new_pb[i] === new_pb[i + 1].slice(0, new_pb[i].length)) {
return false;
}
}
return true;
}