์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[๋ฐฑ์ค€(BOJ)] 11055๋ฒˆ: ๊ฐ€์žฅ ํฐ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด (Dynamic Programming, C++)

PROGRAMMING/Algorithm

by koharin 2021. 2. 20. 02:19

๋ณธ๋ฌธ

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ป C++ ์ œ์ถœ์ฝ”๋“œ


#include <stdio.h>
#include <algorithm>
using namespace std;

int main(){
    int N;
    scanf("%d", &N);
    int A[N] = {};
    int DP[N] = {};

    for(int i=0; i<N; i++) scanf("%d", &A[i]);
    for(int i=0; i<N; i++){
        DP[i] = A[i];
        for(int j=0; j<i; j++){
            if(A[i] > A[j]) DP[i] = max(DP[i], DP[j]+A[i]);
        }
    }

    printf("%d", *max_element(DP, DP+N));
    
}

 

๐Ÿ“ ๋ฌธ์ œํ’€์ด ๊ณผ์ •


  • BOJ:11053 ๊ณผ ๋น„์Šทํ•œ ๋ฌธ์ œ์ธ๋ฐ, ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ์›์†Œ์˜ ํ•ฉ์—์„œ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.
  • DP ๋ฐฐ์—ด์—์„œ ๊ฐ ์›์†Œ์—์„œ์˜ ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด ์ตœ๋Œ“๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
  • 11053๋ฒˆ๊ณผ ๋™์ผํ•˜๊ฒŒ, i๋ฒˆ์งธ๋ณด๋‹ค ์ž‘์€ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์›์†Œ๋“ค์„ ๋น„๊ตํ•ด์„œ ๋”ํ•ด๊ฐ€๋Š”๋ฐ, DP[i]๋Š” A[i]๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ์ค€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  i๋ฒˆ์งธ ์ „๊นŒ์ง€์˜ DP[j] + A[i]์™€ ๋น„๊ตํ•ด์„œ ๋” ํฐ ๊ฒƒ์„ DP[i]๋กœ ์ค€๋‹ค.

 

 

  • ์›์†Œ๊ฐ€ 10 90 20 80 100 ์ธ ๊ฒฝ์šฐ, max(DP[i], DP[j]+A[i])๋ฅผ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ์›์†Œ๊ฐ€ j == 1์ธ ๊ฒฝ์šฐ์—์„œ 200๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ j == 3์ธ ๊ฒฝ์šฐ์—์„œ DP[4]์ธ ๊ฒฝ์šฐ๊ฐ€ 210์œผ๋กœ ๋” ํฌ๋ฏ€๋กœ ์ด 210์„ DP[4]๋กœ ๊ฐ€์ ธ๊ฐ„๋‹ค.

 

 

๐Ÿ‘ ๊ฒฐ๊ณผ


728x90
๋ฐ˜์‘ํ˜•

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ