๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/11727
- 2×n ์ง์ฌ๊ฐํ์ 1×2, 2×1๊ณผ 2×2 ํ์ผ๋ก ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ์๋ ๊ทธ๋ฆผ์ 2×17 ์ง์ฌ๊ฐํ์ ์ฑ์ด ํ๊ฐ์ง ์์ด๋ค.
- ์ฒซ์งธ ์ค์ n์ด ์ฃผ์ด์ง๋ค. (1 ≤ n ≤ 1,000)
- ์ฒซ์งธ ์ค์ 2×n ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ 10,007๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ ์ฅํ n + 1 ํฌ๊ธฐ์ ๋ฐฐ์ด์ ์์ฑํ๋ค.
- ์ง์ฌ๊ฐํ์ ๊ฐ๋ก๊ฐ 1์ผ๋ ๋ฐฉ๋ฒ์ ์๋ 1, ๊ฐ๋ก๊ฐ 2์ผ๋ ๋ฐฉ๋ฒ์ ์๋ 3์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ๊ฐ์ 1, ๋๋ฒ์งธ ๊ฐ์ 3์ผ๋ก ์ด๊ธฐํํ๋ค.
- 3๋ถํฐ n๊น์ง ๋ฐ๋ณต์ ํ๋๋ฐ, ๊ฐ๋ก๊ฐ i์ธ ์ง์ฌ๊ฐํ์ ์ฑ์ธ ๋ฐฉ๋ฒ์ ์๋ ๊ฐ๋ก๊ฐ i - 1์ธ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์์ ๊ฐ๋ก๊ฐ i - 2์ธ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ 2๋ฐฐํ ๊ฐ์ ๋ํ ๊ฐ๊ณผ ๊ฐ์ผ๋ฏ๋ก ํด๋น ๋ ๊ฐ์ ๋ํ๊ณ 10007์ ๋๋ ๋๋จธ์ง ๊ฐ์ ๋ฐฐ์ด์ i๋ฒ์งธ์ ์ ์ฅํ๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- X
์ฝ๋
import java.util.*;
import java.io.*;
public class BOJ11727 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// ์ง์ฌ๊ฐํ ๊ฐ๋ก ๊ธธ์ด
int n = Integer.parseInt(br.readLine());
// ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด
int sqr[] = new int[n + 1];
// ์ง์ฌ๊ฐํ์ ๊ฐ๋ก ๊ธธ์ด๊ฐ 1์ผ ๋, ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ๊ฐ์๊ฐ 1์ด๊ณ
// ๊ฐ๋ก ๊ธธ์ด๊ฐ 2์ผ ๋, ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ๊ฐ์๊ฐ 3์ด๋ฏ๋ก
// ๋ฐฐ์ด์ 1๋ฒ์งธ ๊ฐ์ 1๋ก, 2๋ฒ์งธ ๊ฐ์ 3์ผ๋ก ์ด๊ธฐํ
sqr[1] = 1;
if(n > 1){
sqr[2] = 3;
}
// 3๋ถํฐ n๊น์ง ๋ฐ๋ณต
for(int i = 3; i <= n; i++){
// ๊ฐ๋ก๊ฐ i์ธ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์๋
// ๊ฐ๋ก๊ฐ i - 1์ธ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์์
// ๊ฐ๋ก๊ฐ i - 2์ธ ์ง์ฌ๊ฐํ์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์์ 2๋ฅผ ๊ณฑํ ๊ฐ์ ๋ํ ๊ฐ๊ณผ
// ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ ๋ํด์ค ๋ค 10007๋ก ๋๋ ๋๋จธ์ง ๊ฐ์ ๊ตฌํจ
sqr[i] = (sqr[i - 1] + 2*sqr[i - 2]) % 10007;
}
System.out.println(sqr[n]);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2024.07.31 |
---|---|
[Java] BOJ 7626 Four Squares (2) | 2024.07.31 |
[Java] BOJ 11726 2รn ํ์ผ๋ง (0) | 2024.07.29 |
[Java] BOJ 11659 ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (0) | 2024.07.29 |
[Java] BOJ 9461 ํ๋๋ฐ ์์ด (0) | 2024.07.28 |