๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/9461
- ์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๊ฐํ์ด ๋์ ๋ชจ์์ผ๋ก ๋์ฌ์ ธ ์๋ค.
- ์ฒซ ์ผ๊ฐํ์ ์ ์ผ๊ฐํ์ผ๋ก ๋ณ์ ๊ธธ์ด๋ 1์ด๋ค.
- ๊ทธ ๋ค์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ ์ผ๊ฐํ์ ๊ณ์ ์ถ๊ฐํ๋ค.
- ๋์ ์์ ๊ฐ์ฅ ๊ธด ๋ณ์ ๊ธธ์ด๋ฅผ k๋ผ ํ์ ๋, ๊ทธ ๋ณ์ ๊ธธ์ด๊ฐ k์ธ ์ ์ผ๊ฐํ์ ์ถ๊ฐํ๋ค.
- N์ด ์ฃผ์ด์ก์ ๋, P(N)์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ํ๋๋ฐ ์์ด P(N)์ ๋์ ์ ์๋ ์ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด์ด๋ค. P(1)๋ถํฐ P(10)๊น์ง ์ฒซ 10๊ฐ ์ซ์๋ 1, 1, 1, 2, 2, 3, 4, 5, 7, 9์ด๋ค.
- ์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 100)
- ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค P(N)์ ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- ํ๋๋ฐ ์์ด์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด์ N + 1 ํฌ๊ธฐ๋ก ์์ฑํ๋ค.
- 1๋ฒ์งธ, 2๋ฒ์งธ, 3๋ฒ์งธ ํ๋๋ฐ ์์ด์ ๋ชจ๋ 1์ด๋ฏ๋ก ๋ฐฐ์ด์ 1, 2, 3๋ฒ์งธ ๊ฐ์ 1๋ก ์ด๊ธฐํํด์ค๋ค.
- ๊ทธ๋ฆฌ๊ณ i๋ฒ์งธ ํ๋๋ฐ ์์ด์ ๊ฐ์ i - 2๋ฒ์งธ ํ๋๋ฐ ์์ด์ ๊ฐ๊ณผ i - 3๋ฒ์งธ ํ๋๋ฐ ์์ด์ ๊ฐ์ ๋ํ ๊ฐ์ด๋ฏ๋ก 4๋ถํฐ N๊น์ง ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ i๋ฒ์งธ ํ๋๋ฐ ์์ด์ ๊ฐ์ ๊ณ์ฐํ๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- X
์ฝ๋
import java.util.*;
import java.io.*;
public class BOJ9461 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// ํ
์คํธ ์ผ์ด์ค ๊ฐ์
int T = Integer.parseInt(br.readLine());
for(int test = 0; test < T; test++){
int N = Integer.parseInt(br.readLine());
// ํ๋๋ฐ ์์ด์ ์ ์ฅํ ๋ฐฐ์ด
long tri[] = new long[N + 1];
// ํ๋๋ฐ ์์ด์ 1๋ฒ๋ถํฐ 3๋ฒ๊น์ง๋ ๋ชจ๋ ๊ฐ์ด 1์ด๊ธฐ ๋๋ฌธ์
// 1, 2, 3๋ฒ์งธ ๋ฐฐ์ด์ 1๋ก ์ด๊ธฐํ
tri[1] = 1;
if(N > 1){
tri[2] = 1;
}
if(N > 2){
tri[3] = 1;
}
// 4๋ถํฐ N๊น์ง ๋ฐ๋ณต
for(int i = 4; i <= N; i++){
// i๋ฒ์งธ ํ๋๋ฐ ์์ด์ i-2๋ฒ์งธ์ i-3๋ฒ์งธ ์์ด ๊ฐ์ ํฉํ ๊ฐ
tri[i] = tri[i - 2] + tri[i - 3];
}
sb.append(tri[N] + "\n");
}
System.out.println(sb);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 11726 2รn ํ์ผ๋ง (0) | 2024.07.29 |
---|---|
[Java] BOJ 11659 ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (0) | 2024.07.29 |
[Java] BOJ 9375 ํจ์ ์ ์ ํด๋น (0) | 2024.07.28 |
[Java] BOJ 9095 1, 2, 3 ๋ํ๊ธฐ (0) | 2024.07.28 |
[Java] BOJ 2606 ๋ฐ์ด๋ฌ์ค (0) | 2024.07.27 |