문제링크 : https://www.acmicpc.net/problem/25644
#include <bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(0); cin.tie(0);
int n, result = 0, sum = 0;
vector<int> arr;
int main()
{
fastio;
cin >> n;
for(int i=0; i<n; i++)
{
int a;
cin >> a;
arr.push_back(a); //a1 ~ an 푸쉬
}
for (int i = arr.size() - 1; i >= 0; i--)
{
result = max(result, arr[i]); //최댓값 저장
sum = max(sum, result - arr[i]); //최댓값과 현재 값의 차이 중 가장 큰 값을 저장
}
cout << sum;
}
처음에 이중 for문으로 하니 시간초과가 났다.
배열의 마지막부터 탐색하여 최댓값을 따로 저장해나가고,
최댓값과 현재값의 차이가 가장 큰 값을 또 따로 저장하여 출력한다.
'백준 > 실버' 카테고리의 다른 글
[백준 16922] 로마 숫자 만들기 (C++) (0) | 2023.02.05 |
---|---|
[백준 2841번] 외계인의 기타 연주 (C++) (0) | 2023.02.05 |
[백준 3135번] 라디오 (C++) (0) | 2023.02.05 |
[백준 13706번] 제곱근 (python) (0) | 2023.02.05 |
[백준 5177번] 출력 형식이 잘못되었습니다 (C++) (0) | 2023.02.05 |