React

[1978] 소수 찾기 Find decimals

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

예제 입력 1

4 1 3 5 7
Plain Text
복사

예제 출력 1

3
Plain Text
복사

My solution

소수 구하기 문제에 이어 똑같은 문제인데 소수를 에라토스테네스의 체를 이용해서 2부터 그 수를 제곱근한 수까지만 약수가 존재하는지 확인한 다음 하나라도 존재하면 그 수는 소수가 아닌 것을 확신할 수 있으므로 isPrime() 함수를 이용해 아래와 같이 구현할 수 있다.
1이하일 경우는 당연히 소수가 아니고 2인 경우에도 2로 나누었을 때 0이 되지만 소수이므로 에지 케이스 처리를 해주었다.
며칠만에 백준을 풀었더니 입력 폼을 또 실수했는데 역시 꾸준히 매일 풀어줘야겠다.

소스코드

function isPrime(num) { if (num <= 1) return false; if (num === 2) return true; for (let i = 3; i <= Math.floor(Math.sqrt(num)); i++) if (num % i === 0) return false; return true; } function solution(i) { let answer = 0; let nums = i .split("\n")[1] .split(" ") .map((v) => parseInt(v)); for (let x of nums) if (isPrime(x)) answer++; console.log(answer); // 백준 return answer; } test("solution", () => { expect(solution("4\n1 3 5 7")).toBe(3); });
JavaScript
복사