Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 웅진씽크빅
- 유데미
- React.js
- 개발자부트캠프
- 스나이퍼팩토리
- html
- 해시
- 타입스크립트
- 프로그래머스
- 스레드
- CS
- 프로세스
- 알고리즘
- 프로젝트캠프
- javascript
- #프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프
- Algorithm
- cs #네트워크
- App Runner
- IT개발캠프
- 인사이드아웃
- 메모리
- 리액트
- react
- react-query
- typescript
- 네트워크
- 자바스크립트
- ip
- BFS
Archives
- Today
- Total
Bin's Blog
[프로그래머스] Level2 - 전화번호 목록(Javascript) 본문
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝문제 요약
1️⃣ 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.
2️⃣ 전화번호부에 적힌 전화번호를 담은 배열 phone_book이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.
✅ 정답 코드(수정 전)
function solution(phone_book) {
let answer = true;
// 빈 객체를 만든다
let obj = {};
// 객체에 전화번호를 key와 value에 담는다.
for (const phone of phone_book) {
obj[phone] = phone;
}
// 전화번호를 담은 배열의 길이만큼 돌면서
for (let i = 0; i < phone_book.length; i++) {
// 문자를 스플릿 한다음에 새로 만들 임시 문자열을 위한 변수
let temp = "";
// 문자열을 하나씩 쪼개고 더하면서
for (let p of phone_book[i]) {
temp += p;
// 만약에 새로 만든 문자열이 이미 객체에 존재하거나 전화번호부의 번호랑 똑같지 않으면
if (temp in obj && temp !== phone_book[i]) {
// 접두어가 존재하므로 false
return false
}
}
}
// 접두어가 존재하지 않으면 true
return true
}
더 좋은 코드가 없을까하고 다른 사람 코드를 찾아보다가 간략하면서 시간 복잡도, 효율성적인 측면에서 더 좋은 코드를 발견했다.
✅ 정답 코드(다른 사람의 코드)
function solution(phoneBook) {
// false => true, true => false;
// some 메서드는 해당하는 값이 존재하면 true를 반환
// sort로 오름차순 정렬
return !phoneBook.sort().some((t,i)=> {
// 만약에 phone_book 배열의 인덱스랑 크기랑 똑같으면 일치하는 접두어가 없으므로 false처리 한다.
if(i === phoneBook.length -1) return false;
// startsWith메서드를 활용해서 배열 다음요소가 현재 요소로 시작하는지 체크하고 있으면 true 반환
return phoneBook[i+1].startsWith(phoneBook[i]);
})
}
📔느낀점
👉 메서드를 좀 더 적극적으로 활용해보자.
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스] Level2 - 리코쳇 로봇(Javascript) (0) | 2023.10.30 |
---|---|
[프로그래머스] Level3 - 베스트앨범(Javascript) (0) | 2023.09.14 |
[프로그래머스] Level2 - 광물 캐기(Javascript) (0) | 2023.08.30 |
[프로그래머스] Level2 - 후보키(Javascript) (0) | 2023.08.24 |
[프로그래머스] Level2 - 혼자 놀기의 달인(Javascript) (0) | 2023.08.23 |