늘 겸손하게

프로그래머스 - 2022 카카오 블라인드 채용 > K진수에서 소수 개수 구하기 - JavaScript 본문

코딩 문제/Programmers

프로그래머스 - 2022 카카오 블라인드 채용 > K진수에서 소수 개수 구하기 - JavaScript

besforyou999 2022. 3. 22. 16:59

 

 

안녕하세요 besforyou입니다.

 

2022 카카오 블라인드 채용 > K진수에서 소수 개수 구하기 

 

문제 풀이입니다.

 


문제 풀이

 

1. 양의 정수 n을 k진수로 변환합니다.

 

2. 변환한 k진수 문자열을 0을 기준으로 split 합니다.

 

3. 나누어진 문자열중 소수인 것의 개수를 셉니다.

 

 

 

1. 양의 정수 n을 k진수로 변환

 

n.toString(k) 메소드를 사용하여 n에 담긴 값을 k진수로 변환 가능합니다.

 

1
var changedNum = n.toString(k);
cs

 

 

 

2. 변환한 k진수를 0을 기준으로 split 합니다.

 

split() 메서드를 사용하여 변환된 k진수 문자열을 0을 기준으로 분리합니다.

 

1
var tokens = changedNum.split('0');
cs

 

 

 

3. 나누어진 문자열 중 소수인 것의 개수를 셉니다.

 

숫자가 소수인지 아닌지 판별하기 위한 함수를 먼저 생성합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
 * input : 소수인지 아닌지 판별할 숫자
 * output : 소수이면 1, 소수가 아니면 0
 */
function isPrime(number) {
 
    if (number < 2return 0;
    if (number == 2return 1
 
    for (let i = 2 ; i <= Math.sqrt(number) ; i++) {
        if (number % i == 0return 0;
    }
 
    return 1;
}
cs

 

생성한 함수를 이용하여 나누어진 문자열 중 소수인것의 개수를 센 다음 반환합니다.

 

1
2
3
4
for (let i = 0 ; i < tokens.length ; i++) {
    let token = tokens[i];
    if (isPrime(token) == 1) answer += 1;
}
cs

 

 


코드

 

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
function isPrime(number) {
 
    if (number < 2return 0;
    if (number == 2return 1
 
    for (let i = 2 ; i <= Math.sqrt(number) ; i++) {
        if (number % i == 0return 0;
    }
 
    return 1;
}
 
 
function solution(n, k) {
    var answer = 0;
 
    var changedNum = n.toString(k);
 
    var tokens = changedNum.split('0');
 
    for (let i = 0 ; i < tokens.length ; i++) {
        let token = tokens[i];
        if (isPrime(token) == 1) answer += 1;
    }
 
    return answer;
}
cs

 

 


결과