๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

๋ฐฑ์ค€ 2156๋ฒˆ) ํฌ๋„์ฃผ ์‹œ์‹ java ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฐฑ์ค€ 2156๋ฒˆ) ํฌ๋„์ฃผ ์‹œ์‹ java

sehaan 2023. 3. 1. 02:33

 

๋ถ„์„


 

 

์ผ๋‹จ ํฌ๋„์ฃผ๋ฅผ 3๊ฐœ๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž

 

ํฌ๋„์ฃผ๋ฅผ ์ œ์ผ ๋งŽ์ด ๋งˆ์‹œ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š”

1. ์ฒซ ๋ฒˆ์งธ , ๋‘ ๋ฒˆ์งธ ํฌ๋„์ฃผ๋ฅผ ๋งˆ์‹œ๋Š” ๊ฒฝ์šฐ

2. ์„ธ ๋ฒˆ์งธ , ์ฒซ ๋ฒˆ์งธ ํฌ๋„์ฃผ๋ฅผ ๋งˆ์‹œ๋Š” ๊ฒฝ์šฐ

3. ์„ธ ๋ฒˆ์งธ , ๋‘ ๋ฒˆ์งธ ํฌ๋„์ฃผ๋ฅผ ๋งˆ์‹œ๋Š” ๊ฒฝ์šฐ

 

ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ํ™”์‹์„ ์„ธ์šธ ์ˆ˜ ์žˆ๋‹ค.

dp[num] = max(max(dp[num - 3] + value[num - 1] + value[num], dp[num - 2] + value[num]),dp[num-1]);

 

3๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋น„๊ตํ•ด์ฃผ๋ฉด ๋œ๋‹ค !

 

 

์ฝ”๋“œ


import java.util.Arrays;
import java.util.Scanner;

import static java.lang.Math.max;


public class Main {

    static long[] dp;
    static long[] value;

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();
        value = new long[10001];
        dp = new long[10001];
        for (int i = 1; i <= num; i++) {
            value[i] = sc.nextInt();
        }
        dp[0] = 0;
        dp[1] = value[1];
        dp[2] = value[2] + value[1];
        if (num == 2) {
            System.out.println(dp[2]);
            return;
        }
        for (int i = 3; i <= num; i++) {
            dp(i);
        }
        System.out.println(dp[num]);


    }

    static void dp(int num) {
        dp[num] = max(max(dp[num - 3] + value[num - 1] + value[num], dp[num - 2] + value[num]),dp[num-1]);
    }

}