코딩테스트/백준
1978. 소수 찾기 - Node.js
MiteDev
2024. 9. 20. 15:18
https://www.acmicpc.net/problem/1978
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
코드
const fs = require('fs');
const file_path = process.platform === 'linux' ? 'dev/stdin' : `${__dirname}/input.txt`
const input = fs.readFileSync(file_path).toString().trim();
/**
* @param {string} input
* @returns
*/
const solution = (input) => {
const [num, str] = input.replace(/\r/g, '').split('\n');
const arr = str.split(' ').map(Number).filter(el => el !== 1);
const result = arr.reduce((acc, cur) => {
let temp = [];
for (let i = 2; i < cur; i++) {
if(!(cur % i)) {
temp.push(false);
}
}
!temp.length && acc.push(cur);
return acc;
}, []);
return result.length;
}
console.log(solution(input));
해설
1을 제외한 수 중 1과 본인만을 약수로 갖는 수를 약수라고 한다. 1은 모든 수의 공약수이므로 제외하고 2부터 주어진 수-1까지 수 중 나머지가 0이 아닌 경우만 체크해주면 된다.