728x90
1. 문제
2. 문제 풀이
이 문제는 입력받은 숫자를 검사해서 최대 이익을 구해야 한다. 단, 하루에 하나만 구매할 수 있고 매매 차익을 최대로 만들어줘야 한다.
처음에는 숫자들을 배열 profit에 저장하고 기존 max보다 크면 max를 업데이트하고 변수 ans에 profit과 sum의 차이를 저장했다. 그러나, 무조건 마지막에 최대값이 오지 않기 때문에 이렇게 하면 오류가 발생한다. 그래서 max보다 크면 max값을 업데이트하고, 변수 sum에 max과 현재 profit의 차이를 저장했다.
#include<iostream>
#include<vector>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T;
cin>>T;
for(test_case = 1; test_case <= T; ++test_case)
{
int n; cin >> n;
vector<int> arr(n+1, 0);
for (int i=0; i < n; i++) {
cin >> arr[i];
}
long long max = 0, sum = 0;
for (int i = n -1; i >= 0; i--) {
if (arr[i] > max) {
max = arr[i];
}
else {
sum += max - arr[i];
}
}
cout << "#" << test_case << " " << sum << "\n";
}
return 0;
}
728x90