728x90
https://www.acmicpc.net/problem/25214
최솟값을 저장해두고, 현재 들어오는 값에서 뺀 값과, 이전 정답 값을 비교해가며 정답을 출력하면 되는 문제이다. 아이디어를 떠올리는 것이 생각보다 어려웠던 문제
#include <iostream>
#include <vector>
using namespace std;
int dp[200001];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N; cin >> N;
int minValue = 1000000001;
int maxValue = 0;
for(int i = 0; i < N; i++){
int value; cin >> value;
maxValue = max(maxValue, value);
minValue = min(minValue, value);
if(i == 0) cout << 0 << ' ';
else{
dp[i] = max(dp[i - 1], value - minValue);
cout << dp[i] << ' ';
}
}
}
'백준 문제 풀이' 카테고리의 다른 글
백준 32176번 - 통신 시스템의 성능 저하(C++) (0) | 2024.09.03 |
---|---|
백준 6588번 - 골드바흐 추측 (C++) (0) | 2024.08.27 |
백준 5911번 - 선물 (C++) (0) | 2024.08.20 |
백준 13904번 - 과제 (C++ / Greedy 알고리즘) (4) | 2024.08.16 |
백준 1990번 - 소수인팰린드롬 ( C++ / 에라토스테네스의 체) (0) | 2024.08.16 |