백준 1978번 소수찾기-JS

yugyeongKim·2021년 10월 19일
0

백준

목록 보기
19/52
post-custom-banner

- 제출한 코드

계속 안되다가 1시간 채우기 5분 남기고 갑자기 깨달음을 얻음

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input.shift()); // 4
let numArr = input[0].split(' ');
let len = numArr.length;
let resultArr = [];
// 1보다 큰 자연수 중에 1과 자기자신만을 약수로 가지는
// 다른수로 곱해지면 안된다.
for(let i = 0; i <len; i++) {
    // 자기보다 작은수로 나누어지는가?
    let count = 0;
    for(let j = 1; j <= numArr[i]; j++) {
        if((numArr[i]%j) === 0) {
            count++;
        }
    }
    if(count === 2) {
        resultArr.push(numArr[i]);
    }
}

console.log(numArr);
console.log(resultArr);

소수의 정의를 잘 생각해보면 쉽게 풀 수있다.
소수: 1보다 큰 자연수 중 1과 자기자신만을 약수로 가지는 수
즉, 1과 나 자신만으로 나누어져야 한다. 그말은 나보다 작은 수로 나누었을 때 나누어 떨어질 수 있는 수가 2개(1과 나자신)만이어야 한다는 뜻이다. 그렇게 생각이 되고 구현은 쉬웠다. 내가 규칙을 찾는거까지 머리굴리는게 느린거 같다. 문제 더 풀자

post-custom-banner

0개의 댓글