코딩 테스트/프로그래머스(LV2)

[프로그래머스] k진수에서 소수 개수 구하기 (LV2 - JavaScript)

dev-hpk 2024. 11. 30. 15:37
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

1. 문제

 

제한사항

  • 1 ≤ n ≤ 1,000,000
  • 3 ≤ k ≤ 10 

입출력 예

n k result
437674 3 3
110011 10 2

 

입출력 예 설명

입출력 예 #1
문제 예시와 같습니다.

입출력 예 #2

110011을 10진수로 바꾸면 110011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 11, 11 2개입니다. 이와 같이, 중복되는 소수를 발견하더라도 모두 따로 세어야 합니다.

 

2. 정답 풀이

풀이 전략

    • toString 메서드의 radix를 사용해 n을 k진수로 변환
// 소수 판별 함수
const isPrime = (num) => {
    // 약수의 대칭성 이용 Math.sqrt()메서드로 반복 횟수 절반
    for (let i=2; i<=Math.sqrt(num); i++) {
        if (num % i === 0) return false;
    }
    return true;
}

function solution(n, k) {
    let answer = 0;
    // 1은 소수가 아니기 때문에 필터링
    const formated = n.toString(k).split('0').filter(val => +val > 1);
    formated.forEach(val => {
        answer += isPrime(+val) ? 1 : 0
    })
    return answer;
}

 

 

 

소수 판별 오랜만에 상기할 수 있는 문제여서 좋았다.

n진수 변환 문제가 생각보다 자주 나오는 것 같다. toString 메서드의 radix 사용해서 쉽게 풀자😄😄

 

 

 

[프로그래머스] 방문 길이 (LV2 - JavaScript)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 문제제한사항 dirs는 string형으로 주어지며, 'U', 'D', 'R', 'L' 이외에 문자

dev-hpk.tistory.com

 

 

[프로그래머스] [3차] n진수 게임 (LV2 - JavaScript)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 문제 입력 형식입출력 예ntmpresult2421"0111"161621 "02468ACE11111111" 161622 "1357

dev-hpk.tistory.com