KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • string
  • 정렬
  • 그래프
  • recursion
  • 백준
  • tree
  • 제코베 JS 100제
  • LeetCode
  • Level 0
  • Level1
  • C
  • programmers
  • 수학
  • 다이나믹 프로그래밍
  • 문자열
  • Level 2
  • codeup
  • C++
  • Level 1
  • js

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

PS/백준

백준 / 수학 / 2960번 / 에라토스테네스의 체 / JS

2022. 7. 3. 13:48

문제

에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다.

이 알고리즘은 다음과 같다.

  1. 2부터 N까지 모든 정수를 적는다.
  2. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다.
  3. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다.
  4. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다.

N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N과 K가 주어진다. (1 ≤ K < N, max(1, K) < N ≤ 1000)

출력

첫째 줄에 K번째 지워진 수를 출력한다.

예제 입력 1 

7 3

예제 출력 1 

6

 

/* 에라토스테네스의 체 */
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
// const filePath = process.platform === 'linux' ? '/dev/stdin' : 'BOJ/input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('\n');

const [N, K] = input.shift().split(' ').map(Number);

function solution(N, K) {
  let cnt = 0;
  const isPrime = Array.from({ length: N + 1 }, () => true);

  for(let i=2; i<=N; i++) {
    for(let j=i; j<=N; j+=i) {
      if(isPrime[j]) { // 소수라면 배수 검사
        cnt++;
        isPrime[j] = false; // 소수의 배수는 소수가 아니다.

        if(cnt === K) return j;
      }
    }
  }
}

console.log(solution(N, K));
저작자표시

'PS > 백준' 카테고리의 다른 글

백준 / Recursion(재귀) / 17478번 / 재귀함수가 뭔가요? / JS  (0) 2022.07.04
백준 / 그래프 - BFS / 2644번 / 촌수계산 / JS  (0) 2022.07.03
백준 / DP(Dynamic Programming) / 2156번 / 포도주 시식 / JS  (0) 2022.07.03
백준 / 기하학 / 2477번 / 참외밭 / JS  (0) 2022.06.26
    'PS/백준' 카테고리의 다른 글
    • 백준 / Recursion(재귀) / 17478번 / 재귀함수가 뭔가요? / JS
    • 백준 / 그래프 - BFS / 2644번 / 촌수계산 / JS
    • 백준 / DP(Dynamic Programming) / 2156번 / 포도주 시식 / JS
    • 백준 / 기하학 / 2477번 / 참외밭 / JS
    KimMinJun
    KimMinJun

    티스토리툴바