728x90
반응형
https://www.acmicpc.net/problem/11501
주어진 예시에서 주가가 10 7 6이면 최대 이익이 0이고 주가가 1 1 3 1 2 면 최대 이익이 5다.
접근 방법은 다음과 같다.
1) 배열에 주가를 담아놓는다. ex) 1 1 3 1 2
2) 최대 주가(maxStock)와 최종 이익(totalProfit) 변수를 선언한다. maxStock은 가장 큰 주가를 의미하며 totalProfit은 최대 이익을 의미한다.
3-1) maxStock < 배열의 i번째 주가 인 경우, maxStock = 배열의 i번째 주가로 교체한다.
3-2) 배열의 현재 주가 <= maxStock 인 경우, totalProfit = (maxStock - 배열의 i번째 주가)
이때 반드시 사용한 배열은 clear로 지운 뒤 다시 입력받아야 한다.
#include<iostream>
#include<vector>
#define FastIO ios::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL);
using namespace std;
int main(void)
{
FastIO;
int T = 0; // 테스트 케이스 개수 T
cin >> T;
int N = 0; // 날의 수 N
vector<int> greedy;
while (T--)
{
cin >> N;
long long totalProfit = 0;
greedy.resize(N, 0);
for (int i = 0; i < N; i++)
{
cin >> greedy[i];
}
int maxStock = greedy.back();
for (int i = greedy.size() - 2; 0 <= i; i--)
{
if (maxStock < greedy[i])
{
maxStock = greedy[i];
}
else
{
totalProfit += (maxStock - greedy[i]);
}
}
cout << totalProfit << "\n";
greedy.clear();
}
return 0;
}
728x90
반응형
'알고리즘 (C++)' 카테고리의 다른 글
[백준]25497번: 기술 연계마스터 임스 (0) | 2023.12.06 |
---|---|
[백준]2018: 수들의 합 5 (0) | 2023.12.05 |
[백준]11652번: 카드 (0) | 2023.11.24 |
[백준]15900번: 나무 탈출 (1) | 2023.11.23 |
[백준]16948번: 데스 나이트 (0) | 2023.11.23 |