개발자 첫걸음/프로그래머스
프로그래머스 [level2] k진수에서 소수 개수 구하기
프로아마추어
2022. 10. 5. 20:25
https://school.programmers.co.kr/learn/courses/30/lessons/92335
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
입출력 예시
나의 접근
- 1은 소수가 아니다.
- 처음에는 단순히 for문을 사용하였다. for(i = 2; i < number; i++) -> i로 number를 나눴을 때 나머지가 0이면 소수가 아님 -> 테스트 케이스 1번에 시간 초과 오류 발생
- 다른 해설을 참고하여 제곱근을 구하는 함수를 사용하였다. Math.sqrt(number) -> Math.sqrt(number) > Math.floor(Math.sqrt(number))의 조건이 참이면 소수인 줄 알았다.
- 처음 for을 사용했을 때 처럼 범위를 제곱근까지로 바꾸어보았다. for(i = 2; i < Math.sqrt(number); i++) -> 제곱근으로만 나머지가 0이된다면 소수. -> collect
나의 답안
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function solution(n, k) {
var answer = 0;
// 숫자를 k진수로 변환
const convertArr = n.toString(k).split(0).filter(it => parseInt(it) !== 1);
convertArr.forEach(num => {
let check = 1;
if(Boolean(num)) {
const sqrt = Math.sqrt(num);
// 2 ~ 제곱근까지 나눠지지 않으면 소수
for(let i = 2; i <= sqrt; i++) {
if(num % i === 0) {
check = 0;
}
}
answer += check;
}
})
return answer;
}
|
cs |