https://www.acmicpc.net/problem/1978
1. 문제 설명
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
2. 입출력
3. 문제 풀이
약수는 대칭을 이루기 때문에 제곱근 값 까지만 약수의 여부를 검증하면 된다.
8의 약수는 1, 2, 4, 8 이지만 1*8 = 8*1, 2*4 = 4*2와 같다. 실제 소수 판별하기 위한 값은 1, 2 만 검증하면 된다.
const [n, arr] = require("fs")
.readFileSync("./input.txt")
.toString()
.split(/\r\n/);
//const [n, arr] = require("fs").readFileSync("/dev/stdin").toString().split(/\n/);
function solution(arr) {
// 1) 소수 판별 함수
const isPrimeNumber = (n) => {
// 2) 1은 소수 아님
if (n == 1) return false;
// 3) n의 제곱근 값을 구한다.
let end = Math.sqrt(n);
// 4) 제곱근 값까지만 소수 여부를 판별한다.
for (let i = 2; i <= end; i++) {
if (n % i == 0) return false;
}
return true;
};
// 5) filter로 소수인 값만 체크해서 길이를 구한다.
console.log(arr.split(" ").filter((item) => isPrimeNumber(item)).length);
}
solution(arr);
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스/JavaScript] Lv.2 요격 시스템 (0) | 2023.06.06 |
---|---|
[프로그래머스/JavaScript] Lv.2 광물 캐기 (0) | 2023.04.28 |
[백준 / NodeJS] 11655번 ROT13 (0) | 2023.04.23 |
[백준 / NodeJS] 10809번 알파벳 찾기 (1) | 2023.04.22 |
[백준 / NodeJS] 10808번 알파벳 개수 (0) | 2023.04.21 |