๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 9095 1, 2, 3 ๋”ํ•˜๊ธฐ

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 28.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/9095

  • ์ •์ˆ˜ 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์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์„ n + 1 ํฌ๊ธฐ๋กœ ๋งŒ๋“ค๊ณ  1์€ 1, 2๋Š” 2, 3์€ 4๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ์ €์žฅํ•ด์ค€๋‹ค.
  • ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๊ทœ์น™์„ ์ฐพ์•„๋ดค์„ ๋•Œ, i๋ฒˆ์งธ ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜๋Š” i - 1๋ฒˆ์งธ, i - 2๋ฒˆ์งธ, i - 3๋ฒˆ์งธ ์—ฐ์‚ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’์ด๋ฏ€๋กœ N์ด 4์ด์ƒ์ด๋ฉด, 4๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ์œ„ ์‹์œผ๋กœ i๋ฒˆ์งธ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • X

๊ทœ์น™์„ ์ฐพ๊ธฐ๊นŒ์ง€ ์กฐ๊ธˆ ๊ฑธ๋ ธ์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ฐพ์•„์„œ ํ’€๊ณ  ๋‚˜๋‹ˆ ๋ฟŒ๋“ฏํ•˜๋‹ค!!

์ฝ”๋“œ

import java.io.*;
import java.util.*;

public class BOJ9095 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๊ฐœ์ˆ˜
        int T = Integer.parseInt(br.readLine());

        for(int test = 0; test < T; test++){
            int n = Integer.parseInt(br.readLine());

            // ๋ฐฐ์—ด์— ํ•ฉ์˜ ๊ฐœ์ˆ˜ ์ €์žฅ
            int arr[] = new int[n + 1];

            // ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์ €์žฅ
            // 1์€ 1, 2๋Š” 2, 3์€ 4๋กœ ์ดˆ๊ธฐ๊ฐ’ ์ €์žฅ
            arr[1] = 1;

            if(n > 1){
                arr[2] = 2;
            }

            if(n > 2){
                arr[3] = 4;
            }

            // 4๋ถ€ํ„ฐ๋Š” ํ•ฉ์˜ ๊ฐœ์ˆ˜๊ฐ€ i - 1, i - 2, i - 3๋ฒˆ์งธ ๊ฐ’์„
            // ๋ชจ๋‘ ๋”ํ•œ ๊ฐ’
            for(int i = 4; i <= n; i++){
                arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3];
            }

            sb.append(arr[n] + "\n");
        }
        System.out.println(sb);
    }
}