μκ³ λ¦¬μ¦
[Java] BOJ 11727 2×n νμΌλ§ 2
πκ·€π
2024. 7. 30. 23:03
λ¬Έμ
λ¬Έμ λ§ν¬ 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]);
}
}