-
[λ°±μ€(BOJ) 2493λ²] ν (C++)PS(Problem Solving)/C++ 2022. 1. 16. 23:23λ°μν
λ¬Έμ λ§ν¬
https://www.acmicpc.net/problem/2493
λ¬Έμ μ 보
μ λ ₯
첫째 μ€μ νμ μλ₯Ό λνλ΄λ μ μ Nμ΄ μ£Όμ΄μ§λ€. Nμ 1 μ΄μ 500,000 μ΄νμ΄λ€. λμ§Έ μ€μλ Nκ°μ νλ€μ λμ΄κ° μ§μ μμ λμΈ μμλλ‘ νλμ λΉμΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. νλ€μ λμ΄λ 1 μ΄μ 100,000,000 μ΄νμ μ μμ΄λ€.
μΆλ ₯
첫째 μ€μ μ£Όμ΄μ§ νλ€μ μμλλ‘ κ°κ°μ νλ€μμ λ°μ¬ν λ μ΄μ μ νΈλ₯Ό μμ ν νλ€μ λ²νΈλ₯Ό νλμ λΉμΉΈμ μ¬μ΄μ λκ³ μΆλ ₯νλ€. λ§μ½ λ μ΄μ μ νΈλ₯Ό μμ νλ νμ΄ μ‘΄μ¬νμ§ μμΌλ©΄ 0μ μΆλ ₯νλ€.
νμ΄
μ΄ λ¬Έμ λ μ΄λ €μ΄ λ¬Έμ μ¬μ ν΄κ²°νλλ° νλ€μλ€. νμ¬ μ λ ₯νλ νμ λμ΄κ° κΈ°μ‘΄ μ€νμ νμ λμ΄λ³΄λ€ ν¬κ±°λ μμλλ₯Ό μ μκ°ν΄μ£Όλ©΄ λλ€. λ§μ½ μ€νμ topμ΄ νμ¬ μ λ ₯νλ νμ λμ΄λ³΄λ€ ν¬λ€λ©΄ νμ¬ μ λ ₯νλ νμ μ νΈλ₯Ό λ°μ μ μλ€. κ·Έλ¦¬κ³ μ€νμ topμ΄ νμ¬ μ λ ₯νλ νμ λμ΄λ³΄λ€ μλ€λ©΄ νμκ° μλ νμ΄λ―λ‘ popμ νλ€.
6 μ λ ₯ => μ€ν : (1, 6)
9 μ λ ₯ => pop => μ€ν : (2, 9)
5 μ λ ₯ => μ€ν : (2, 9), (3, 5)
7 μ λ ₯ => pop => μ€ν : (2, 9), (4, 7)
4 μ λ ₯ => μ€ν : (2, 9), (4, 7), (5, 4)
μμ€ μ½λ
#include <bits/stdc++.h> using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; stack<pair<int, int>> S; for (int i = 1; i <= n; i++) { int tower; cin >> tower; while (!S.empty()) { // topμ΄ νμ¬ μ λ ₯νλ κ°λ³΄λ€ ν¬λ€λ©΄ μ νΈλ₯Ό λ°μ μ μμ! if (S.top().second > tower) { cout << S.top().first << ' '; break; } // topμ΄ νμ¬ μ λ ₯νλ κ°λ³΄λ€ μμΌλ©΄ pop νλ€. S.pop(); } if (S.empty()) { cout << '0' << ' '; } S.push(make_pair(i, tower)); } return 0; }
λ°μν