Algorithm๐Ÿฅ‡

9095.123๋”ํ•˜๊ธฐ

hae02y 2023. 11. 1. 00:47
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์ •์ˆ˜ 4๋ฅผ 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ์ด 7๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ํ•ฉ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ๋Š” ์ˆ˜๋ฅผ 1๊ฐœ ์ด์ƒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  • 1+1+1+1
  • 1+1+2
  • 1+2+1
  • 2+1+1
  • 2+2
  • 1+3
  • 3+1

์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n์„ 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

## ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ •์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. n์€ ์–‘์ˆ˜์ด๋ฉฐ 11๋ณด๋‹ค ์ž‘๋‹ค.

## ์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค, n์„ 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ œ์ถœ ์ •๋‹ต ๋งžํžŒ ์‚ฌ๋žŒ ์ •๋‹ต ๋น„์œจ
1 ์ดˆ (์ถ”๊ฐ€ ์‹œ๊ฐ„ ์—†์Œ) 512 MB 110467 72793 50085 64.336%

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

ํ’€์ด

์žฌ๊ท€ + ๋ฉ”๋ชจ์ด์ œ์ด์…˜์œผ๋กœ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ๊ทธ๋‚˜๋งˆ ์‰ฌ์šด๋ฌธ์ œ!

์ฝ”๋“œ

import java.util.Scanner;  

public class _123๋”ํ•˜๊ธฐ {  

    public static int[] dp = new int[11];  

    public static void main(String[] args) {  

        Scanner sc = new Scanner(System.in);  

        int t = sc.nextInt();  

        for(int i=0; i<t; i++){  
            int n = sc.nextInt();  

            System.out.println(onetwothree(n));  
        }  
        sc.close();  
    }  

    public static int onetwothree(int n){  

        if(n == 1) return 1;  
        if(n == 2) return 2;  
        if(n == 3) return 4;  

        if(dp[n] == 0){  
            dp[n] = onetwothree(n-1) + onetwothree(n-2) + onetwothree(n-3);  
        }  

        return dp[n];  
    }  
}
๋ฐ˜์‘ํ˜•