Algorithm/BOJ

[백준 알고리즘/C++/그리디] 11501 주식

pinevienna 2021. 2. 17. 23:03

 

 

날마다 세 가지 중 한 행동을 할 수 있다

가능한 가장 높은 이익을 출력하는 문제

 

 

제대로 낚였다

며칠?전에 주식문제 푼적 있는데 그거 생각나서 고대로 풀었다가 (미쳤나?) 틀림

 

내일 떨어진다고 오늘 팔면 안되고 실제 주식처럼 존버마인드를 가지고 풀어야 한다

존버할지 말지 앞으로의 주가를 다 알아볼 수 없으므로 끝에서부터 계산해야 한다

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
 
    int t, n;
    int arr[1000001= { 0, };
 
    cin >> t;
    while (t--) {
        cin >> n;
 
        for (int i = 0; i < n; i++)
            cin >> arr[i];
 
        long long res = 0;
        int last = arr[n - 1];
 
        for (int i = n - 2; i >= 0; i--) {
            if (last > arr[i])
                res += last - arr[i];
            else
                last = arr[i];
        }
 
        cout << res << '\n';
    }
}
cs