코딩테스트
[JS] 2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기
차차한
2022. 9. 22. 16:00
function solution(n, k) {
var answer = n.toString(k).split(0);
var count = 0;
for(var i = 0; i < answer.length; i++){
if(primeChk(answer[i])){
count++;
}
}
return count;
}
function primeChk(num){
if(num <= 1){
return false;
}
for(var i = 2; i <= Math.sqrt(num); i++){
if(num % i == 0){
return false;
}
}
return true;
}
n을 k진수로 변환 후 split(0)을 하면 쉽게 원하는 배열을 만들 수 있다.
실제로 코드 자체는 엄청 빨리 구현을 할 수 있었는데 TC 1번에서 계속 시간초과가 떴다.
소수를 찾는 과정에서 2~N까지 계속 나누는 과정이 시간을 많이 소요한다는 것은 알고 있었는데 뭔가 될 것만 같아서 계속 도전해보다 결국 소수를 찾는 함수를 하나 만드는 것으로 해결..
김종도님의 답변이 큰 도움이 됐다.
제곱근까지만 구해도 소수 판별이 가능하다!!
+시간초과나는 코드
function solution(n, k) {
var answer = n.toString(k).split(0);
var count = 0;
for(var i = 0; i < answer.length; i++){
var chk = 0;
for(var j = 1; j <= answer[i]; j++){
if(answer[i] % j === 0){
chk++;
}
if(chk > 2){
break;
}
}
if(chk === 2){
count++;
}
chk = 0;
}
return count;
}
처음에 구현한 코드인데 1번에서 계속 시간초과가 떴다..