문제 링크
이번 문제는 i번째 날에 주식을 사고, j번째 날에 팔았을 때의 이득이 제일 컸을 경우를 푸는 문제입니다!
입력 받았을 때, 맨 처음 입력값은 minNum값으로 지정해줍니다!
1. 내가 저장한 minNum값보다 작으면, minNum을 해당 값으로 업데이트 시켜줍니다.
2. 내가 저장한 minNum값보다 크면, 해당 값을 maxNum으로 지정하여, maxNum - minNum값이 저장한 ans값보다 크면 ans값을 업데이트 시켜줍니다.
3. 만약에 minNum값보다 큰 값이 안들어온다면 자연스럽게 ans 값은 초기값인 0이 출력되겠죠?
#include<iostream>
using namespace std;
void init() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main() {
init();
int n;
cin >> n;
int minNum = 0; int maxNum = -1;
int ans = 0;
for (int i = 0; i < n; i++) {
int a;
cin >> a;
if (i == 0) {
minNum = a;
continue;
}
if (minNum > a) {
minNum = a;
}
else if (minNum < a) {
maxNum = a;
ans = max(ans, maxNum - minNum);
}
}
cout << ans;
}