๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DP

[๋ฐฑ์ค€] 2xn ํƒ€์ผ๋ง 1, 2

by syLim___ 2024. 11. 13.
728x90

https://www.acmicpc.net/problem/11726

 

https://www.acmicpc.net/problem/11727

 

์„ธํŠธ์ฒ˜๋Ÿผ ์ƒ๊ธด ๋‘ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค.

์‰ฌ์šด DP ๋ฌธ์ œ๋ผ๊ณ  ํ•ด์„œ ๋ค๋ณ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๋นจ๋ฆฌ ๋ชปํ’€์—ˆ๋‹ค.

 

๋‘๋ฌธ์ œ ๋‹ค ๋‚ด๊ฐ€ ๋ช‡๋…„์ „์— ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ํ’€์—ˆ๋˜๊ธฐ ๊ธฐ๋ก์ด ์žˆ๋˜๋ฐ

๊ทธ๋• ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋‚˜ ๋ชจ๋ฅด๊ฒ ๋‹ค ใ…Žใ…Ž

 

์šฐ์„  ๋‘ ๋ฌธ์ œ ๋ชจ๋‘, ๋ฌธ์ œ ํ’€์ด ๋ฐฉ๋ฒ•์€ ๋ชปํ’€๊ณ  ๊ณ ๋ฏผํ–ˆ๋˜ ์‹œ๊ฐ„์ด ์•„๊นŒ์šธ ์ •๋„๋กœ ์•„์ฃผ ๊ฐ„๋‹จํ–ˆ๋‹ค.

 

n=1์ผ ๋•Œ๋ถ€ํ„ฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ฐ์ ธ๋ณด๊ณ  ์ ํ™”์‹์„ ์„ธ์šฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

 

2xn ํƒ€์ผ๋ง์˜ ๊ฒฝ์šฐ,

๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ฐ์ ธ๋ณด๋ฉด ์ด๋ ‡๋‹ค.

n=1 : 1๊ฐ€์ง€
n=2 : 2๊ฐ€์ง€
n=3 : 3๊ฐ€์ง€ (= 1 + 2)
n=4 : 5๊ฐ€์ง€ (= 2 + 3)
n=5 : 8๊ฐ€์ง€ (= 3 + 5)
...

ํ”ผ๋ณด๋‚˜์น˜์™€ ๋™์ผํ•œ ๊ทœ์น™์ด๋‹ค.

์ฆ‰ 2xn ํƒ€์ผ๋ง ๋ฌธ์ œ๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์™€ ๊ฐ™์€ ๋ฌธ์ œ์ด๋‹ค.

 

์ œ์ถœ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());

        int[] dp = new int[n+1];
        dp[0] = 1;
        dp[1] = 1;

        for(int i = 2; i <= n; i++) {
            dp[i] = (dp[i-1] + dp[i-2]) % 10007;
        }
        System.out.println(dp[n]);
    }
}

 

 

 

2xn ํƒ€์ผ๋ง 2์˜ ๊ฒฝ์šฐ,

๋˜‘๊ฐ™์ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ฐ์ ธ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

n=1 : 1๊ฐ€์ง€
n=2 : 3๊ฐ€์ง€
n=3 : 5๊ฐ€์ง€ (= 1*2 + 3)
n=4 : 11๊ฐ€์ง€ (= 3*2 + 5)
n=5 : 21๊ฐ€์ง€ (= 5*2 + 11) 
n=6 : 43๊ฐ€์ง€ (= 11*2 + 21)
...

์ž˜ ๋ณด๋ฉด ๊ทœ์น™์ด ๋ณด์ธ๋‹ค.

์ฒ˜์Œ์—๋Š” n=4์ผ ๋•Œ์™€ n=5์ผ ๋•Œ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ž˜๋ชป ๊ตฌํ•ด์„œ ๊ทœ์น™์„ ๊ณ„์† ๋ชป์ฐพ์•˜์—ˆ๋‹ค.

ํ•ญ์ƒ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ •ํ™•ํžˆ ๋”ฐ์ง€๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.

 

์ œ์ถœ ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());

        int[] dp = new int[n+1];
        dp[0] = 1;
        dp[1] = 1;

        for(int i = 2; i <= n; i++) {
            dp[i] = (dp[i-1] + dp[i-2] * 2) % 10007;
        }
        System.out.println(dp[n]);
    }
}

 

728x90