[백준] 11501번: 주식
2022. 10. 3. 21:30ㆍTIL💡/Algorithms
https://www.acmicpc.net/problem/11501
문제 해결 방법 다 고안해놓고 괜히 10만 개 정도는 배열에 못 넣는 줄 알고 돌아 돌아 접근했다.
알고보니 배열에 넣을 수 있더라...?
여기서 주식을 통해 이익을 최대화하는 방법은 주식을 가장 싸게 사서, 가장 비싸게 파는 것이다.
여기서 앞에서부터 주식을 사고, 팔았는데 만약 나중에 더 높은 주식 가격이 나온다면...?
곤란하다.
그래서 이런 점을 해소하기 위해 뒤에서부터 높은 주식 가격을 파악해나간다.
이를 통해 예를 들어 가장 높은 주식 가격 다음에 나온 주식들은 그 이후에 존재하는 주식 중 가장 높은 주식 가격일 때 처분한다.
이로써 다시 한 번 강조하지만 문제를 어렵게 꼬아서 생각하면 나만 힘들다..
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T, N;
cin >> T;
while(T--) {
cin >> N;
long long answer = 0;
vector<int> stocks(N);
for(int i = 0;i < N;i++){
cin >> stocks[i];
}
int highest_price = 0;
for(int i = N - 1;i >= 0;i--) {
if(stocks[i] > highest_price) {
highest_price = stocks[i];
}
else {
answer += highest_price - stocks[i];
}
}
cout << answer << '\n';
}
}
'TIL💡 > Algorithms' 카테고리의 다른 글
[파이썬] queue (0) | 2022.10.07 |
---|---|
[백준] 2304번: 창고 다각형(스택을 이용한 최소 구획 정하기) (0) | 2022.10.04 |
[백준] 4179번: 불! (0) | 2022.10.02 |
[자료구조] B-트리, B+트리 (0) | 2022.09.30 |
[자료구조] AVL 트리 (0) | 2022.09.30 |