반응형
https://www.acmicpc.net/problem/17298
17298번: 오큰수
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
www.acmicpc.net
[ 문제풀이 ]
1. stack이 비어있지 않고, n의 값이 stack.top보다 클 경우 st.pop을 해주고, st이 완전히 비기 전까지 반복해 줍니다.
2. arr 배열을 만들고, 1의 st.pop 과정에서 arr 배열의 해당 숫자의 idx 값을 n으로 갱신합니다.
3. st에 n을 push 합니다.
4. arr 배열을 출력합니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include<iostream> #include<stack> using namespace std; int N; int arr[1000001]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; fill(arr, arr + N + 1, -1); stack<pair<int, int>> st; for (int i = 1; i <= N; i++) { int n; cin >> n; if (!st.empty()) { while (st.top().first < n) { arr[st.top().second] = n; st.pop(); if (st.empty()) break; } } st.push({ n,i }); } for (int i = 1; i <= N; i++) { cout << arr[i] << ' '; } } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 3151번 - 합이 0 (C++) (0) | 2023.07.10 |
---|---|
[ 백준 ] 5430번 - AC (C++) (0) | 2023.07.09 |
[ 백준 ] 6198번 - 옥상 정원 꾸미기 (C++) (0) | 2023.07.07 |
[ 백준 ] 1456번 - 거의 소수 (C++) (0) | 2023.07.06 |
[ 백준 ] 1038번 - 감소하는 수 (C++) (0) | 2023.07.05 |