๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐“ก๐“ธ๐“ธ๐“ถ๐Ÿฃ: ๐’œ๐“๐‘”๐‘œ๐“‡๐’พ๐“‰๐’ฝ๐“‚/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด

BOJ9095 : 1, 2, 3 ๋”ํ•˜๊ธฐ (Silver 3)

๋„ˆ๋ฌด ์˜ค๋žœ๋งŒ์— DP ํ’€์—ˆ๋”๋‹ˆ ์–ด์ผ€ํ•˜๋Š”๊ฑด์ง€ ์™„์ „ ๊นŒ๋จน์—ˆ๋Š”๋ฐ

์ธํ„ฐ๋„ท์— ์น˜์ž๋งˆ์ž ๋– ์˜ค๋ฆ„

 

DP == ์ ํ™”์‹ ์„ธ์šฐ๊ธฐ

 

๊ทธ๋ž˜์„œ DP ๊ธฐ๋ณธ ๋ฌธ์ œ๋Š” ์ฝ”๋”ฉ๋ณด๋‹ค๋Š” ์ˆ˜ํ•™๋ฌธ์ œ ํ‘ธ๋Š” ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ ๋‹ค..

 

์ฒ˜์Œ์— ์ด์ƒํ•œ ์ง“ํ•˜๋‹ค๊ฐ€ ์ธํ„ฐ๋„ท์˜ ํž˜์„ ๋นŒ๋ ค ํžŒํŠธ๋ฅผ ์–ป์—ˆ๊ณ , ๊ทธ ๋‹ต์€

 

dp[i] = dp[i-3] + dp[i-2] + dp[i-1]

 

 

์˜ˆ๋กœ, a5๋ฅผ ๊ตฌํ•œ๋‹ค๊ณ  ํ•ด๋ณด๋ฉด

a4 ์ฆ‰ 4๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ์ „๋ถ€ +1 ํ•œ ๊ฒƒ 

+

a3 ์ฆ‰ 3์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ์ „๋ถ€ +2 ํ•œ ๊ฒƒ

a2 ์ฆ‰ 2๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ์ „๋ถ€ +3 ํ•œ ๊ฒƒ

 

์ด ๋ฐ”๋กœ 5๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ „๋ถ€์ด๋‹ค.

(2) + 3

(3) + 2 

(4) + 1

 

๊ด„ํ˜ธ ์•ˆ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ ์•ž์—์„œ ๊ตฌํ•ด๋†จ์œผ๋‹ˆ, ๊ทธ ๋ฐฉ๋ฒ•์—๋‹ค๊ฐ€ ๊ฐ๊ฐ 3, 2, 1์„ ๋”ํ•˜๋ฉด ๋จ

 

 

#include <cstdio>
 
int dp[12] = { 0, 1, 2, 4, };
 
int main(void)
{
    int T, n, i;
    scanf("%d", &T);
 
    for (i = 4; i <= 12; i++)
        dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
 
    while (T--) {
        scanf("%d", &n);
        printf("%d\n", dp[n]);
    }
 
    return 0;
}

 

 

์›๋ž˜ C++์“ฐ๋Š” ๋‚˜์ง€๋งŒ,,, ๊ท€์ฐฎ์•„์„œ ๊ธฐ๋ณธ ํฌ๋งท์€ ์ธํ„ฐ๋„ท ๋ฒ ๊ปด์›Œใ…“ใ…†๋‹ค

a3๊นŒ์ง€๋Š” ์ •์˜ํ•ด์ฃผ๊ณ  a4๋ถ€ํ„ฐ ์ ํ™”์‹ ํ™œ์šฉํ•ด์„œ ๊ตฌํ•ด์ฃผ๋ฉด ๋

๋ฉ”๋ชจ๋ฆฌ๋‚˜ ์‹œ๊ฐ„ ์ œํ•œ ์‹ ๊ฒฝ์“ธ ํ•„์š” ์—†๋Š”๊ฒŒ, ์ฃผ์–ด์ง€๋Š” n์ด 11์ดํ•˜๋ผ๊ณ ํ•ด์„œ ๋ฏธ๋ฆฌ 12๊นŒ์ง€ ์ „๋ถ€ ๋””ํ”ผ๋ฅผ ๋Œ๋ ค์„œ ๋ฐฐ์—ด์— ๊ฐ’์„ ์ €์žฅํ•ด๋‘๊ณ  ํ•„์š”ํ•œ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋œ๋‹ค

 

(๋งŒ์•ฝ ์ด ๋•Œ n์ด ์ปค์ง€๊ณ  ์‹œ๊ฐ„์ œํ•œ์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋˜๋ฉด....? ์œผ ๊ณจ์น˜์•„ํŒŒ)