본문 바로가기

백준

백준11501 - 주식

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

 

11501번: 주식

문제 홍준이는 요즘 주식에 빠져있다. 그는 미래를 내다보는 눈이 뛰어나, 날 별로 주가를 예상하고 언제나 그게 맞아떨어진다. 매일 그는 아래 세 가지 중 한 행동을 한다. 주식 하나를 산다. 원

www.acmicpc.net

생각의 전환이 필요한 문제였다. 현재 주식값보다 제일 비싸지는 미래의 값을 찾아서 가장 이득이 많이 남을때 팔아버리면 되지만 앞에서부터 큰 값을 찾아가는 과정은 너무 시간이 오래걸렸다. 따라서 가장 먼 미래인 맨 뒤에서부터 이득이 가장 커지는 경우를 찾아가면 되었다. 현재 최대 주식 차익을 결정하기 위해서 가장 우선적으로 가장 먼 미래의 값을 찾아 점점 가까운 미래로 접근하면서 가장 이득이 클 때를 찾으면 되기 때문이다.

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int T;
    
    cin >> T;
    while(T--) {
        int N;
        long long int num;
        long long int big = -1;
        long long int sum = 0;
        vector<int> v;
        
        cin >> N;
        while(N--) {
            cin >> num;
            v.push_back(num);
        }
        
        reverse(v.begin(), v.end()); //뒤에서부터 비교하기 위함
        
        for(int i = 0; i < v.size(); i++) {
            if(big < v[i]) {
                big = v[i];
            }
            else {
                sum += big - v[i];
            }
        }
        
        cout << sum << '\n';
        
    }
    return 0;
}

'백준' 카테고리의 다른 글

백준11502 - 새 개의 소수 문제  (0) 2020.05.21
백준2696 - 중앙값 구하기  (0) 2020.05.17
백준16162 - 가희와 3단 고음  (0) 2020.05.13
백준18353 - 병사 배치하기  (0) 2020.05.12
백준1240 - 노드사이의 거리  (0) 2020.05.11