본문 바로가기

알고리즘

프로그래머스 > 2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[나의 코드]

const solution=(n,k)=>{
  let answer=0;
  const kNum = n.toString(k)
  const array=kNum.split("0").map((item)=>+item)
  const isPrime=(num)=> {
  if (num <=1) return false;
  for (let i = 2; i <= Math.sqrt(num); i++) {
    if (num % i === 0) return false;
  }
  return true;
}
  for(i=0;i<array.length;i++){
    if(isPrime(array[i])){ 
      answer++
    }
  }
  return answer
}

쉽게 풀 수 있었던 문제! 소수인지를 판별하는 공식은 Math.sqrt()를 이용하지 않으면 테스트 케이스들 중 하나를 통과할 수 없기 때문에 가장 효율적인 Math.sqrt()를 이용하는 방법으로 수정해주었다. 10진수를 k 진수로 변경하는 방법과 같은 기초적인 내용이었다.

  • 0P0처럼 소수 양쪽에 0이 있는 경우
  • P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우
  • 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우
  • P처럼 소수 양쪽에 아무것도 없는 경우
  • 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다.
    • 예를 들어, 101은 P가 될 수 없습니다.

길게 써져 있었지만 결국에는 간단하게 자주 사용하는 split을 통해서 해결할 수 있는 부분이었다. 

 

 

 

728x90