언젠가는 펼쳐 볼 아카이브

[BOJ] 2581번 - 소수 본문

IT/Baekjoon Oline Judge

[BOJ] 2581번 - 소수

개발자희망생고롸파덕 2023. 9. 6. 14:55

사용언어 : 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);
  }
}

참고 : https://velog.io/@gusdh2/JS%EB%B0%B1%EC%A4%80-2581%EB%B2%88-%EC%86%8C%EC%88%98-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8node.jsjavascript%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8

 

엄청나다.. 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