본문 바로가기
Algorithm/C++

[백준 17298] 오큰수

by imagineer_jinny 2022. 9. 3.

17298번: 오큰수 (acmicpc.net)

 

17298번: 오큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

 

배운 것

for문을 n-1부터 돌리는 아이디어..!

 

정답 코드

// Authored by : haneulkimdev
// Co-authored by : -
// http://boj.kr/98a57090ad0b472f86492f495a362127
#include <bits/stdc++.h>
using namespace std;

int a[1000000];
int ans[1000000];
int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  stack<int> S;
  for (int i = n - 1; i >= 0; i--) {
    while (!S.empty() && S.top() <= a[i]) S.pop();
    if (S.empty())
      ans[i] = -1;
    else
      ans[i] = S.top();
    S.push(a[i]);
  }
  for (int i = 0; i < n; i++) cout << ans[i] << ' ';
}

'Algorithm > C++' 카테고리의 다른 글

[백준 2667] 단지번호붙이기  (0) 2022.09.04
[백준 2583] 영역 구하기  (0) 2022.09.04
[백준 6198] 옥상 정원 꾸미기  (0) 2022.09.03
[백준 7562] 나이트의 이동  (0) 2022.09.01
[백준 5427] 불  (0) 2022.08.31

댓글