-
[λ°±μ€(BOJ) 1874λ²] μ€ν μμ΄ (C++)PS(Problem Solving)/C++ 2022. 1. 16. 22:56λ°μν
λ¬Έμ λ§ν¬
https://www.acmicpc.net/problem/1874
λ¬Έμ μ 보
μ λ ₯
첫 μ€μ n (1 ≤ n ≤ 100,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° nκ°μ μ€μλ μμ΄μ μ΄λ£¨λ 1μ΄μ nμ΄νμ μ μκ° νλμ© μμλλ‘ μ£Όμ΄μ§λ€. λ¬Όλ‘ κ°μ μ μκ° λ λ² λμ€λ μΌμ μλ€.
μΆλ ₯
μ λ ₯λ μμ΄μ λ§λ€κΈ° μν΄ νμν μ°μ°μ ν μ€μ ν κ°μ© μΆλ ₯νλ€. pushμ°μ°μ +λ‘, pop μ°μ°μ -λ‘ νννλλ‘ νλ€. λΆκ°λ₯ν κ²½μ° NOλ₯Ό μΆλ ₯νλ€.
νμ΄
κ΅μ₯ν ν΄κ²°νκΈ° μ΄λ €μ΄ λ¬Έμ μλ€. μμ 1λ²μ λ³΄κ³ λ¬Έμ λ₯Ό μ΄ν΄ν΄λ³΄μ.
8 4 3 6 8 7 5 2 1 μ μ λ ₯νλ€κ³ νμ. λ°λΌμ μ²μμ 4λ₯Ό μμ΄μ λ£μ΄μΌ νλ€. κ·Έ κ³Όμ μ μλμ κ°λ€.
- 1 2 3 4λ₯Ό μ€νμ push νλ€.
- μ€νμμ 4λ₯Ό pop ν΄μ μμ΄μ λ£λλ€. (μ€νμλ 1 2 3μ΄ λ¨λλ€.)
κ·Έλ¦¬κ³ 3μ μμ΄μ λ£μ΄μΌ νλ€.
- μ€νμμ 3μ pop ν΄μ μμ΄μ λ£λλ€. (μ€νμλ 1 2κ° λ¨λλ€.)
κ·Έ λ€μμ 6μ μμ΄μ λ£μ΄μΌ νλ€.
- 5 6μ μ€νμ push νλ€.
- μ€νμμ 6μ pop ν΄μ μμ΄μ λ£λλ€. (μ€νμλ 1 2 5κ° λ¨λλ€.)
κ·Έλ¦¬κ³ 8μ μμ΄μ λ£μ΄μΌ νλ€.
- 7 8μ μ€νμ push νλ€.
- μ€νμμ 8μ pop ν΄μ μμ΄μ λ£λλ€. (μ€νμλ 1 2 5 7μ΄ λ¨λλ€.)
κ·Έ λ€μμ 7μ μμ΄μ λ£μ΄μΌ νλ€.
- μ€νμμ 7μ pop ν΄μ μμ΄μ λ£λλ€. (μ€νμλ 1 2 5κ° λ¨λλ€.)
κ·Έλ¦¬κ³ 5λ₯Ό μμ΄μ λ£μ΄μΌ νλ€.
- μ€νμμ 5λ₯Ό pop ν΄μ μμ΄μ λ£λλ€. (μ€νμλ 1 2κ° λ¨λλ€.)
κ·Έ λ€μμ 2λ₯Ό μμ΄μ λ£μ΄μΌ νλ€.
- μ€νμμ 2λ₯Ό pop ν΄μ μμ΄μ λ£λλ€. (μ€νμλ 1μ΄ λ¨λλ€.)
κ·Έλ¦¬κ³ 1μ μμ΄μ λ£μ΄μΌ νλ€.
- μ€νμμ 1μ pop ν΄μ μμ΄μ λ£λλ€. (μ€νμ΄ λΉμλ€.)
μμ€ μ½λ
#include <bits/stdc++.h> using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; stack<int> S; vector<char> result; int idx = 1; while (n--) { int num; cin >> num; while (idx <= num) { S.push(idx); idx++; result.push_back('+'); } if (S.top() == num) { S.pop(); result.push_back('-'); } else { cout << "NO"; return 0; } } for (int i = 0; i < result.size(); i++) { cout << result[i] << '\n'; } return 0; }
λ°μν