1. ๋ฌธ์ ์ค๋ช
[๋ฌธ์ ๋งํฌ](https://www.acmicpc.net/problem/2018)
2. ์ ๊ทผ ๋ฐฉ์
ํฌํฌ์ธํฐ ๋ฌธ์
- ํฌ ํฌ์ธํฐ ๊ตฌ๊ฐ ์์ ํฉ์ ๋ณ์ acc์ ์ ์ฅํ๋ค.
- acc <= N์ด ์๋๋ฉด ์ค๋ฅธ์ชฝ ํฌ์ธํฐ๋ฅผ ํ ์นธ ์์ง์ฌ์ ๊ทธ ๊ฐ์ acc์ ๋ํ๋ค.
- acc > N ์ด๋ฉด ์ผ์ชฝ ํฌ์ธํฐ๋ฅผ ํ ์นธ ์์ง์ฌ์ ๊ทธ ๊ฐ์ acc์ ๋ํ๋ค.
- ์ด๋ ๊ฒ ์ค๋ฅธ์ชฝ ํฌ์ธํฐ๊ฐ ๊ตฌ๊ฐ์ ๋งจ ๋์ ๋๋ฌํ ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ acc == N ์ธ ๊ฒฝ์ฐ๋ฅผ ์ผ๋ค.
3. ์ฝ๋ ๋ถ์
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int cnt = 0, start = 0, end = 0, acc = 0;
while (end <= N){
if(acc < N){
end++;
acc += end;
}else {
if (acc == N){
cnt++;
end++;
acc += end;
}else {
start++;
acc -= start;
}
}
}
System.out.println(cnt);
}
}
4. ์ฑ์ฅํ๊ธฐ
ํฌํฌ์ธํฐ ๋ฌธ์ ์์ ๋ด ์ทจ์ฝ์ ์ ๋ฒ์ ์ฐ์ ์ด๋ค.
- ํฌ์ธํฐ๋ฅผ ํ ์นธ ์์ผ๋ก ์งํ ์ํจ๋ค.
- ํฌ์ธํฐ ์ฌ์ด์ ํฉ์ด N์ด ๋๋์ง ํ์ธํ๋ค.
์ด ๋ ๊ฐ์ง ๊ณ์ฐ์ ์์์ ๋ฐ๋ผ์ while๋ฌธ์ ๋ฒ์๊ฐ ๋ฌ๋ผ์ง๋ค. (โ -> โก) ๋ก ํ ๊ฒฝ์ฐ, ์์ ๊ฐ์ด while๋ฌธ์ ๋ฒ์๋ฅผ <=N ๊น์ง๋ง ํ๋ฉด ๋๋ค. ๋ฐ๋ฉด (โก -> โ ) N์ด ๋ํด์ง๋ ์์ ์ end = N+1์ธ ์์ ์ด๋ค. ๋ฐ๋ผ์ ๋ง์ง๋ง N๊น์ง ๋ํ๋ ค๋ฉด while๋ฌธ์ ๋ฒ์๊ฐ N+1๊น์ง์ฌ์ผ ํ๋ค.
// ์์ ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int cnt = 0;
int start = 0;
int end = 0;
int acc = 0;
while (end <= N+1){
if(acc < N){
acc += end;
end++;
}else {
if (acc == N){
cnt++;
acc += end;
end++;
}else {
acc -= start;
start++;
}
}
}
System.out.println(cnt);
}
}
0