

๋ฌธ์ ์ถ์ฒ : https://www.acmicpc.net/problem/1644
<์ ๊ทผ ๋ฐฉ๋ฒ>
์ฐ์ N์ ์ต๋๊ฐ์ธ 4๋ฐฑ๋ง๊น์ง์ ์์๋ค์ ๊ตฌํฉ๋๋ค.
๊ทธ ํ, ํฌ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์ ํฉ์ด N์ด ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ธ๋ ค ์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
<ํ์ด>
1. ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ด์ฉํด์ 4๋ฐฑ๋ง๊น์ง์ ์์๋ฅผ ๊ตฌํด์ vector์ ์ ์ฅํฉ๋๋ค.
2. ๋ฒกํฐ์ ์ ์ผ ์ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์ ๋ ๊ฐ๋ฅผ ์ ์ธํด์ฃผ๊ณ ํฉ์ ์ ์ฅํ๋ ๋ณ์๋ ์ ์ธํด์ค๋๋ค.
3. ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ sum์ด N๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด sum์ p1์ด ๊ฐ๋ฆฌํค๋ ๊ฐ์ ๋นผ๊ณ p1์ ํ ์นธ ๋ค๋ก N๋ณด๋ค ์์ผ๋ฉด p2๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ๋ํ๊ณ p2๋ฅผ ํ ์นธ ๋ค๋ก ์ด๋์ํต๋๋ค. ๊ทธ์ค sum๊ณผ N์ด ๊ฐ์ผ๋ฉด result++๋ฅผ ํด์ค๋๋ค.
4. p2๊ฐ Vec์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ p1์ด p2๋ณด๋ค ์ปค์ง๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํฉ๋๋ค.
<์์ค ์ฝ๋>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include <iostream>
#include <vector>
#define MAX 4000001
using namespace std;
int main() {
int N, result=0;
bool check[MAX]={0};
vector<int> Vec;
cin >> N;
for(int i=2; i*i<=N; i++){
if(!check[i]){
for(int j=i*i; j<=N; j+=i){
check[j]=true;
}
}
}
for(int i=2; i<=N; i++){
if(!check[i]) Vec.push_back(i);
}
int p1=0, p2=0, sum=2;
while(p1<=p2&&p2<Vec.size()){
if(sum>=N){
if(sum==N) result++;
sum -= Vec[p1];
p1++;
}
else{
p2++;
sum += Vec[p2];
}
}
cout << result;
}
|
cs |
<ํ๊ธฐ>

์ฒ์์ ์ฝ๋๋ฅผ ์์ฑํ ๋ sum์ Vec[0]์ผ๋ก ์ด๊ธฐํํ์๋๋ฐ, ๊ฐ์ด ํ ๊ฐ ์ผ ๋ Vec์ ๊ฐ์ด push ๋์ง ์๋๋ฐ Vec[0]์ ์ ๊ทผํ๋ ค๊ณ ํด์ ๋ฐํ์ ์๋ฌ ๋ฐ์ํ์์ต๋๋ค. ๋ถ๋ช ๋ฒ์๋ฅผ ์ ๋๋ก ์ง์ ํ๋๋ฐ OutOfBounds๊ฐ ๋จ๊ธธ๋ ์ง๋ฌธ ๊ฒ์ํ์ ๋ค์ ธ๋ณด๋ ์ ๋ ๊ฐ์ ์ค์๋ฅผ ํ์ ๋ถ์ด ๊ณ์๋๊ตฐ์ใ ใ ...
๋ญ ๊ทธ ์ธ์๋ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด์ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ค ์๋ค๋ฉด ํฌ๊ฒ ์ด๋ ต์ง ์์ ๋ฌธ์ ์์ต๋๋ค.
'๐งโ๐ป ์ฝ๋ฉ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐฑ์ค 2042 - ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ (c++) (0) | 2022.09.08 |
|---|---|
| ๋ฐฑ์ค 17143 - ๋์์ (c++) (0) | 2022.08.31 |
| ๋ฐฑ์ค 2003 - ์๋ค์ ํฉ 2 (c++) (0) | 2022.08.09 |
| ๋ฐฑ์ค 4781 - ์ฌํ ๊ฐ๊ฒ (c++) (0) | 2022.08.05 |
| ๋ฐฑ์ค 12865 - ํ๋ฒํ ๋ฐฐ๋ญ (c++) (0) | 2022.08.01 |