반응형
오른쪽에 있는 자신보다 큰 수 중에서 가장 왼쪽에 있는 수를 출력해주는 문제이다.
#include <iostream>
#include <stack>
using namespace std;
int main() {
int n;
cin >> n;
int arr[1000001];
int answer[1000001];
stack<int> s;
for(int i=0; i<n; i++){
cin >> arr[i];
answer[i] = -1;
}
for(int i=0; i<n; i++){
while(!s.empty() && arr[s.top()] < arr[i]){
answer[s.top()] = arr[i];
s.pop();
}
s.push(i);
}
for(int i=0; i<n; i++){
cout << answer[i] << " ";
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[백준] 14243 출근기록2 (C++) (0) | 2023.05.15 |
---|---|
[프로그래머스] LV.5 상품을 구매한 회원 비율 구하기 (MySQL) (0) | 2023.04.21 |
[프로그래머스] LV.3 숫자게임 (JAVA) (0) | 2023.04.18 |
[백준] 11000 강의실 배정 (C++) (0) | 2023.04.14 |
[프로그래머스] LV.3 거스름돈 (C++) (0) | 2023.04.12 |