언젠가는 펼쳐 볼 아카이브
[BOJ] 2581번 - 소수 본문
사용언어 : javascript - node.js
# 첫번째 작성 코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const [m, n] = fs
.readFileSync(filePath)
.toString()
.trim()
.split('\n')
.map((item) => +item);
solution(m, n);
function solution(m, n) {
let answer = [];
for (let i = m; i <= n; i++) {
if (i === 1) {
continue;
} else {
let isPrime = true;
for (let j = 2; j < i; j++) {
if (i % j === 0) {
isPrime = false;
break;
}
}
if (isPrime) answer.push(i);
}
}
if (answer.length) {
console.log(answer.reduce((total, prime) => (total += prime)));
console.log(answer[0]);
} else {
console.log(-1);
}
}
>> 결과 : 정답입니다.
소수 문제는 앞에서 많이 풀어서 이제 감이 오는 것 같다. 근데 뭔가 JS에서 제공하는 내장함수로 코드를 작성해보고 싶은 생각이 들어서 다른 사람들은 어떻게 풀어봤는지 찾아봤다. array 채우는 부분도.. 가능할 같은데..
function solution(m, n) {
const array = Array(n - m + 1)
.fill()
.map((_, index) => m + index);
const answer = array.filter((num) => {
for (let i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return num > 1;
});
if (answer.length) {
console.log(answer.reduce((total, prime) => (total += prime)));
console.log(answer[0]);
} else {
console.log(-1);
}
}
엄청나다.. JS 내장함수를 잘 이용할 수 있으면 저렇게 짤 수 있구나를 느꼈다.
나도 계속 복습하고 써봐서 잘 쓰는 사람이 되어야겠다.
## 추가 공부
- map 함수는 기본적으로 item, index 두 인자를 가지고 있음.
>> item만 썼어서 index를 까먹었다. 다시 확인하게 됨!
// item : 값
// index : 몇번째인지 (for문에서의 i와 같음)
test.map((item, index) => {...});
'IT > Baekjoon Oline Judge' 카테고리의 다른 글
[BOJ] 1085번 - 직사각형에서 탈출 (0) | 2023.09.06 |
---|---|
[BOJ] 11653번 - 소인수분해 (0) | 2023.09.06 |
[BOJ] 1978번 - 소수 찾기 (0) | 2023.08.30 |
[BOJ] 9506번 - 약수들의 합 (0) | 2023.08.30 |
[BOJ] 2501번 - 약수 구하기 (0) | 2023.08.30 |