(C++) BOJ 25644: 최대 상승

고현서·2023년 2월 2일
1

Algorithm

목록 보기
5/6

문제 링크

이번 문제는 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;
} 
profile
New 현또의 코딩세상 / Unity 개발자

0개의 댓글