๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ ๋ฌธ์ ์ด๋ฆ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
ํด๊ฒฐ๋ฒ
์ด๋ฒ ๋ฌธ์ ๋ ์ง๋ 2n ํ์ผ๋ง1๋ฌธ์ ์ ์์ฃผ ๋น์ทํ ๋ฌธ์ ์ด๋ค.
๋์ถฉ ์ถ์ ์๋๋ฅผ ์๊ฐํด๋ณด๋ฉด 2n ํ์ผ๋ง์ด ํผ๋ณด๋์น ์์ด์ ๊ฐ๊ณผ ๋๊ฐ์์ ํด๋น ๋ฌธ์ ๋ฅผ ํผ๋ณด๋์น๋ก ํ์๋์ง ํน์ ์ ํํ ๋ฌธ์ ์ถ์ ์๋๋ฅผ ํ์
ํ๊ณ ํ์๋์ง๋ฅผ ํ์ธํ๋ ๋ฌธ์ ๊ฐ๋ค.
์ ๊ทผ๋ฒ
์ง๋ 2n ํ์ผ๋ง์์๋ 2๊ฐ์ง ์ข ๋ฅ์ ํ์ผ์ด ์กด์ฌํ์ง๋ง ์ด๋ฒ 2n ํ์ผ๋ง์๋ 3๊ฐ์ง ์ข ๋ฅ์ ํ์ผ์ด ์กด์ฌํ๋ค.
- 1 x 2 ํ์ผ
- 2 x 1 ํ์ผ
- 2 x 2 ํ์ผ
์ง๋ ๋ฌธ์ ์ ์ ๊ทผ๊ณผ ๋น์ทํ๊ฒ ์ด๋ฒ์๋ ๊ฐ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ n-1 ๋ฒ์งธ ๋จ๊ณ, n-2๋ฒ์งธ ๋จ๊ณ์์ ์ฐพ์๋ณผ ์ ์๋ค.
์ง๋ ๋ฌธ์ ์ ๋ค๋ฅธ ์ ์ด ์๋ค๋ฉด 2 x 2 ํ์ผ์ด ์ถ๊ฐ ๋์๋ค๋ ๊ฒ์ธ๋ฐ,
2 x 2 ํ์ผ์ 1 x 2 ํ์ผ 2๊ฐ์ ๋น์ทํ ๋ชจ์์ผ๋ก ๋์ฒด๋ ์ ์๋ค.
์ด ๋ง์ 1 x 2 ํ์ผ์ด ๋ค์ด๊ฐ ์ ์๋ a(n-2)
์ ๊ฒฝ์ฐ์ ์๊ฐ 2๋ฒ ๋ฐ๋ณต๋ ์ ์๋ค๋ ์๋ฆฌ์ด๋ค.
์ด ๊ฒ์ ์ ํ์์ผ๋ก ๋ฐ๊ฟ๋ณด๋ฉด,
2 x (n-1)
๋ฒ์งธ ํ์ผ์์ 2 x 1 ํ์ผ์ด ์ถ๊ฐ๋ ๊ฒฝ์ฐ2 x (n-2)
๋ฒ์จฐ ํ์ผ์์ 1 x 2 ํ์ผ์ด 2๊ฐ ํฉ์ณ์ง ํํ์ ํ์ผ์ด ์ถ๊ฐ๋ ๊ฒฝ์ฐ2 x (n-2)
๋ฒ์จฐ ํ์ผ์์ 2 x 2 ํ์ผ์ด ์ถ๊ฐ๋ ๊ฒฝ์ฐ
์ค๋ต ํ๋ณด
์ด๋ฒ์๋ ์ญ์ ๋ชจ๋๋ฌ ์ฐ์ฐ์ ์ฃผ์ํด์ผ ํ๋ค.
์ ๋ต ์ฝ๋
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[1001];
arr[1] = 1;
arr[2] = 3;
for (int i = 3; i <= n; i++) {
arr[i] = (arr[i-2] * 2) + arr[i-1];
arr[i] %= 10007;
}
bw.write(String.valueOf(arr[n]));
bw.flush();
bw.close();
}
}
๋ฌธ์ ํ๊ณ
์ด๋ฒ ๋ฌธ์ ๋ ์ง๋ 2 x n ํ์ผ๋ง์์ ๋ฐฐ์ด ๋จน์ ์คํฌ์ ์ฌ์ฉํ ์ ์์๋ค.
ํ์ง๋ง ์์ง ์ ํ์์ ํน์ฑ์ ์ดํดํ์ง ๋ชปํ ๊ฒ์ธ์ง ๊ณ์ ์ค๋ณต์ ๋ํด์ ์ ๊ฒฝ์ฐ๊ฒ ๋๋ค.
์ค๋ณต์ ๋ํ ์ ๊ฒฝ์ ์ด๋ค๋ ๊ฒ์ ์ ํ์ ํน์ฑ์ ํ์คํ ์ดํดํ์ง ์์ ๊ฒ์ผ๋ก ์๊ฐ๋๋ค.
๋๊ธ