Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

연습장/백준(BOJ) 문제풀이

[백준 2960] 에라토스테네스의 체 with Node.js

2021. 4. 18. 16:46

문제 링크

www.acmicpc.net/problem/2960

 

2960번: 에라토스테네스의 체

2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다.

www.acmicpc.net

풀이

const [n, k] = require("fs").readFileSync("/dev/stdin").toString().trim().split(" ").map(v => +v);
const arr = [];
for (let i=2; i<=n; i++) arr.push(i);
let count = 0;
let prime;
let nth;
while (count < k) {
    prime = arr[0];
    arr.some(v => {
        if (v % prime === 0) {
            arr.splice(arr.indexOf(v), 1);
            nth = v
            count++;
        }
        if (count === k) return true;
    });
}
console.log(nth);

2부터 n까지 수 중에서 가장 작은 수로 나누어 떨어지는 수를 모두 지우기를 반복하면서 그 횟수가 k와 같아질 때 지운 수를 nth에 저장한다.

 

forEach 대신 some을 사용한 이유는 count가 k에 도달했을 때 반복을 빠져나가야 하는데, forEach문으로는 까다롭기 때문이다.  Array.prototype.some은 콜백 함수의 반환값이 단 한 번만이라도 참이면 true를 반환하는데, 이 말은 즉 콜백 함수의 반환값이 true라면 그 즉시 순회를 멈추고 true를 반환한다는 뜻이다. 따라서, 콜백 함수에서 count가 k와 동일할 때 true를 반환하도록 하면 그 즉시 반복을 멈추고 빠져나가게 된다.

저작자표시 비영리 (새창열림)

'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글

[백준 10825] 국영수 with Node.js  (0) 2021.04.20
[백준 2606] 바이러스 with Python  (0) 2021.04.20
[백준 4949] 균형잡힌 세상 with Node.js  (0) 2021.04.17
[백준 1764] 듣보잡 with Node.js  (0) 2021.04.16
[백준 11399] ATM with Python  (0) 2021.04.16
    '연습장/백준(BOJ) 문제풀이' 카테고리의 다른 글
    • [백준 10825] 국영수 with Node.js
    • [백준 2606] 바이러스 with Python
    • [백준 4949] 균형잡힌 세상 with Node.js
    • [백준 1764] 듣보잡 with Node.js
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바