๐Ÿ’  BOJ/Class 4

[BOJ][C++] ๋ฐฑ์ค€ 1932๋ฒˆ: ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

์„ ๋‹ฌ 2023. 2. 8. 17:27
๋ฐ˜์‘ํ˜•

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

 

1932๋ฒˆ: ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

์ฒซ์งธ ์ค„์— ์‚ผ๊ฐํ˜•์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500)์ด ์ฃผ์–ด์ง€๊ณ , ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

        7
      3   8
    8   1   0
  2   7   4   4
4   5   2   6   5

์œ„ ๊ทธ๋ฆผ์€ ํฌ๊ธฐ๊ฐ€ 5์ธ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์˜ ํ•œ ๋ชจ์Šต์ด๋‹ค.

๋งจ ์œ„์ธต 7๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์•„๋ž˜์— ์žˆ๋Š” ์ˆ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์•„๋ž˜์ธต์œผ๋กœ ๋‚ด๋ ค์˜ฌ ๋•Œ, ์ด์ œ๊นŒ์ง€ ์„ ํƒ๋œ ์ˆ˜์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ์•„๋ž˜์ธต์— ์žˆ๋Š” ์ˆ˜๋Š” ํ˜„์žฌ ์ธต์—์„œ ์„ ํƒ๋œ ์ˆ˜์˜ ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋˜๋Š” ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฒƒ ์ค‘์—์„œ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ผ๊ฐํ˜•์˜ ํฌ๊ธฐ๋Š” 1 ์ด์ƒ 500 ์ดํ•˜์ด๋‹ค. ์‚ผ๊ฐํ˜•์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๊ฐ ์ˆ˜๋Š” ๋ชจ๋‘ ์ •์ˆ˜์ด๋ฉฐ, ๋ฒ”์œ„๋Š” 0 ์ด์ƒ 9999 ์ดํ•˜์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์‚ผ๊ฐํ˜•์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500)์ด ์ฃผ์–ด์ง€๊ณ , ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ˆ˜์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    int n;
    cin >> n;
    vector<vector<int>> v(n);
    for(int i=0; i<n; i++){
        for(int j=0; j<=i; j++) {
            int input;
            cin >> input;
            v[i].push_back(input);
        }
    }
    
    vector<vector<int>> dp(n, vector<int>(n));
    dp[0][0] = v[0][0];
    for(int i=1; i<n; i++) {
        dp[i][0] = dp[i-1][0] + v[i][0];
        for(int j=1; j<i; j++) {
            dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + v[i][j];
        }
        dp[i][i] = dp[i-1][i-1] + v[i][i];
    }
    
    sort(dp[n-1].begin(), dp[n-1].end(), greater<>());
    
    cout << dp[n-1][0];
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•