728x90
문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한 사항
- n은 2이상 1000000이하의 자연수입니다.
문제 풀이 방법
- 이 소수찾기 문제는 두 함수로 나누어서 풀어보았다.
- 첫번째 함수는 인자로 전달된 수가 소수인지 true / fasle 를 반환한다.
- for문에서 Math.sqrt를 사용한 이유는 주어진 수를 나누어 나머지를 확인할 때 중복된 동작을 방지하기 위함이다.
(ex. 8이 주어진 경우 약수는 1, 2, 4, 8 이지만, 재곱근 2.8284....을 이용해 풀어주면 2 까지 동작하면 된다.) - 그리고 소수이면 true, 아니면 false를 반환한여 solution 함수에서 사용해서
answer++을 해주어 소수의 갯수를 구해준다.
내가 작성한 코드
const pri = (x) =>{
for(let i = 2; i<= Math.sqrt(x); i++){
if(x % i ===0){
return false
}
}
return true;
}
const solution = (n) => {
let answer = 0;
for(let i=2; i <=n; i++){
if(pri(i)){
answer++;
}
}
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
1Level / 연습문제 / 하샤드 수 (0) | 2022.10.13 |
---|---|
1Level / 연습문제 / 2016년 (0) | 2022.10.10 |
1Level / 연습문제 / 이상한 문자 만들기 (0) | 2022.10.05 |
1Level / 2018 KAKAO BLIND RECRUITMENT / [1차] 비밀지도 (0) | 2022.10.04 |
1Level / 2018 KAKAO BLIND RECRUITMENT / [1차] 다트 게임 (0) | 2022.09.27 |