Notice
Recent Posts
Link
정화 코딩
[C++] 주식 (백준 11501번) 본문
https://www.acmicpc.net/problem/11501
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
vector<int> b(n);
for (int i = 0; i < n; i++) b[i] = a[i];
int idx = n - 1;
for (int i = n - 1; i >= 0; i--) {
if (a[i] >= a[idx]) idx = i;
b[i] = a[idx];
}
long long ans = 0;
for (int i = 0; i < n; i++) {
ans += (b[i] - a[i]);
}
cout << ans << '\n';
}
}
보자마자 백준 2493번 탑 문제가 생각났다. 탑은 스택 문제고 이건 아니긴 한데... 그냥 상황이 비슷하달까... 탑 문제에 대한 설명은 여기에.
오른쪽에서부터 쭉 보면서 새롭게 만나는 최댓값을 새로운 배열 b에 저장해주었다. 배열 b에 저장되는 값들이 해당 시점에 산 주식의 최고점이 되는 셈이다. a[i]를 사서 b[i]에 파는 것 생각해서 전부 더해 답을 구하면 된다. (AC)
'PS' 카테고리의 다른 글
[C++] 숨바꼭질 2 (백준 12851번) (0) | 2025.03.18 |
---|---|
[C++] 중앙값 제거 (백준 23758번) (0) | 2025.03.17 |
[C++] 콘센트 (백준 7774번) (0) | 2025.03.14 |
[C++] 최소비용 구하기 2 (백준 11779번) (0) | 2025.03.12 |
[C++] 수열의 합 (백준 1024번) (0) | 2025.03.09 |
Comments