728x90
https://www.acmicpc.net/problem/2960
2960๋ฒ: ์๋ผํ ์คํ ๋ค์ค์ ์ฒด
๋ฌธ์ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ N๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ชจ๋ ์์๋ฅผ ์ฐพ๋ ์ ๋ช ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ๋ค. 2๋ถํฐ N๊น์ง ๋ชจ๋ ์ ์๋ฅผ ์ ๋๋ค. ์์ง ์ง์ฐ์ง ์์ ์ ์ค ๊ฐ์ฅ ์์ ์๋ฅผ ์ฐพ๋๋ค. ์ด๊ฒ์ P๋ผ๊ณ ํ๊ณ , ์ด ์๋ ์์์ด๋ค. P๋ฅผ ์ง์ฐ๊ณ , ์์ง ์ง์ฐ์ง ์์ P์ ๋ฐฐ์๋ฅผ ํฌ๊ธฐ ์์๋๋ก ์ง์ด๋ค. ์์ง ๋ชจ๋ ์๋ฅผ ์ง์ฐ์ง ์์๋ค๋ฉด, ๋ค์ 2๋ฒ ๋จ๊ณ๋ก ๊ฐ๋ค. N, K๊ฐ ์ฃผ์ด์ก์ ๋, K๋ฒ์งธ ์ง์ฐ๋ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์
www.acmicpc.net
โญ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include<vector>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, k,count=0, result;
vector<int> vec;
cin >> n >> k;
for (int i = 1; i <= n; i++) {
vec.push_back(i);
}
for (int i = 2; i <= n; i++) {
for (int j = 1; i*j <= n; j++) {
if (vec[i*j - 1] != 0) {
vec[i*j - 1] = 0;
count++;
if (count == k) {
result = i * j;
break;
}
}
}
if (count == k) {
break;
}
}
cout << result;
return 0;
}
โจ ๋ฌธ์ ํ์ด ๊ฒฐ๊ณผ

๐ ๋ฌธ์ ํ์ด
- i๋ 2๋ถํฐ ์์ํ์ฌ ๋ฐฐ๋ก ์ฆ๊ฐ์ํฌ ์๋ฅผ ์ง์ ํ๋ค
- j๋ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฆ๊ฐ์์ผ i*j์ ๊ฐ์ ์ฐจ๋ก๋๋ก ๊ตฌํด๋๊ฐ๋ค
- j*i์ ๊ฐ์ด ์ง์์ง๊ฒ ๋๋ฉด ํด๋น ๊ฐ์ด ์๋ ์ธ๋ฑ์ค(j*i-1)์ ๊ฐ์ 0์ผ๋ก ๋ฐ๊พธ์ด์ค๋ค
- ์ซ์๋ฅผ ์ง์ ์ผ๋ count๊ฐ์ ์ฆ๊ฐ์์ผ์ฃผ๊ณ , ํด๋น ๊ฐ์ด ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์ ํ๋ k์ ๊ฐ์์ง ํ์ธํ๋ค
728x90