오답노트

[수학] BOJ 2960 에라토스테네스의 체 본문

C,C++/코딩테스트

[수학] BOJ 2960 에라토스테네스의 체

권멋져 2022. 4. 24. 00:31
https://www.acmicpc.net/problem/2960
 

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

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

www.acmicpc.net

 

- 문제 파악

2부터 입력에서 주어진 수만큼 배수를 지운다. 지운 배수들은 배열에 넣어놓고 반복문에서 이미 지운 배수를 조회할 땐 지나친다.

 

- 정답 코드

#include "bits/stdc++.h"

using namespace std;

int arr[1005];

int main()
{
    int n, k;
    cin >> n >> k;

    int ans = 0;

    for (int i = 2; i <= n; i++)
    {
        int j = 0;
        while (++j)
        {
            int a = i * j;
            if (a > n) break;
            if (arr[a]) continue;

            arr[a]++;
            ans++;

            if (ans == k)
            {
                cout << a;
                return 0;
            }
        }
    }

}