728x90
문제 설명
문제 풀이 방법
- 우선 n을 k진수로 바꾸는 것부터 시작했고,
문제 설명에서 0과 인접한 수들을 추출하는 것으로 문제를 파악하기 시작했다.
이는 split('0')을 해주면 0을 기준으로 0이 제외된 배열을 반환하게 되기에 수들의 배열을 확인할 수 있다. - 그리고 filter메서드로 1과 빈 문자열을 제외해준다.
- 0이 제외된, 0에 인접했던 수들의 배열을 forEach메서드를 이용해 각 수들이 소수임을 확인한다.
소수가 맞다면 반환할 값에 1을 더해준다. - 이렇게 더해진 값을 반환해준다.
코드 1
function solution(n, k) {
let answer = 0;
const num = n.toString(k).split('0').filter((e) => { return e !== '1' ? (e !== '' ? e : false) : false});
num.forEach((e) => {
if(isPrime(e)){
answer += 1;
}
})
return answer
}
const isPrime = (num) => {
if(num === 2) return true;
for(let i=2; i<=Math.sqrt(num); i++){
if(num % i === 0) return false;
}
return true
}
위의 코드를 보다보니 너무 복잡한거 같아 통과한 뒤 코드를 다듬어봤다.
코드 2
function solution(n, k) {
return n.toString(k).split('0').filter((e) => isPrime(+e)).length;
}
const isPrime = (num) => {
if(!num || num < 2) return false;
for(let i=2; i<=Math.sqrt(num); i++){
if(num % i === 0) return false;
}
return true
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 깊이/너비 우선 탐색(DFS/BFS) / 게임 맵 최단거리 (0) | 2023.06.24 |
---|---|
[JS] 2Level / 2020 KAKAO BLIND RECRUITMENT / 괄호 변환 (0) | 2023.06.23 |
[JS] 2Level / 월간 코드 챌린지 시즌3 / n^2 배열 자르기 (0) | 2023.06.11 |
[JS] 힌트 2Level / 완전탐색 / 피로도 (0) | 2023.06.09 |
[JS] 힌트 2Level / Summer/Winter Coding(~2018) / 스킬트리 (0) | 2023.06.08 |