https://www.acmicpc.net/problem/1874
1874λ²: μ€ν μμ΄
1λΆν° nκΉμ§μ μμ λν΄ μ°¨λ‘λ‘ [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] μ°μ°μ μννλ©΄ μμ΄ [4, 3, 6, 8, 7, 5, 2, 1]μ μ»μ μ μλ€.
www.acmicpc.net
β λ΄ μμ€ μ½λ
#include<iostream>
#include <stack>
#include <vector>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int num,n;
vector<int> answer;
stack<int> s;
vector<char> a;
cin >> num;
for (int i = 0; i < num; i++) {
cin >> n;
answer.push_back(n);
}
n = 1;
for (int i = 0; i < answer.size(); i++) {
if (s.empty()) {
//μ€νμ΄ λΉμ΄μλλ°, μ€νμ μΆκ° λ κ°μ΄ λ§λ€μ΄μΌλλ μ«μλ³΄λ€ ν΄ κ²½μ°
if (n > answer[i]) {
//μμ΄μ μμ± ν μ μλ κ²½μ°λΌ νλ¨, μ’
λ£
s.push(-1);
break;
}
s.push(n++);
a.push_back('+');
}
//λ§λ€μ΄μΌ λλ μ«μλ³΄λ€ μ€νμ μΆκ° λ κ°μ΄ μμ κ²½μ°
while (n <= answer[i] ){
//μ€νμ κ°μ κ³μνμ¬ μΆκ°
s.push(n++);
//push μ°μ°μ΄ λμμΌλ +λ₯Ό μ μ₯
a.push_back('+');
}
//μ€νμ μΆκ° λ μκ° λ§λ€μ΄μΌ λλ κ°λ³΄λ€ ν΄ κ²½μ°
while (n > answer[i]) {
if (s.top() <= answer[i]) {
break;
}
//μ€νμμ popλ κ°μ΄ λ§λ€μ΄μΌ λλ μλ³΄λ€ ν΄ κ²½μ°
else if(s.top()>answer[i]){
//κ³μν΄μ popμ ν΄μ€λ€
s.pop();
//popμ°μ°μ νμμΌλ -λ₯Ό μ μ₯
a.push_back('-');
}
}
//popλ κ°κ³Ό λ§λ€μ΄μΌ λλ μκ° κ°μΌλ©΄
if (s.top() == answer[i]) {
//ν΄λΉ μλ₯Ό popνκ³ -κ²°κ³Ό μ μ₯
a.push_back('-');
s.pop();
}
}
//μ€νμ΄ λΉμ΄μμΌλ©΄ μμ΄μ μμ±ν κ²μΌλ‘ νλ¨
if (s.empty()) {
//μ μ₯ ν΄λμλ + - κ°λ€μ μΆλ ₯
for (int i = 0; i < a.size(); i++) {
cout << a[i] << '\n';
}
}
//λΉμ΄μμ§ μμΌλ©΄ μμ΄μ μμ± ν μ μλ κ²μΌλ‘ νλ¨
else {
cout << "NO";
}
return 0;
}
π λ¬Έμ νμ΄
1λΆν° NκΉμ§μ μλ₯Ό μ€νμ λ£μλ€κ° λ½μλ΄μ΄ λμ΄ λμμΌλ‘μ¨ λ§λ€μ΄μΌ λλ μμ΄μ μ λ ₯μΌλ‘ λ€μ΄μ€λ μμ΄ (μμ μ λ ₯ 1μ κ²½μ° : 4, 3, 6, 8, 7, 5, 2, 1)μ΄λ€.
μμ μ λ ₯ 1μ κ²½μ°λ₯Ό μ΄ν΄λ³΄μ. ν΄λΉ μμ΄μμ κ°μ₯ μ²μμΌλ‘ νμν μλ '4'μ΄λ€.
μ€νμ 1, 2, 3, 4λ₯Ό push νλ, '+ + + +' λΌλ μΆλ ₯μ μ»κ² λλ€.
μ€νμ νμν μμΈ 4κ° push λμμΌλ, μ΄κ²μ κΊΌλ΄μ΄ μμ΄λ‘ λ§λ€μ΄μΌ λλ€. 4λΌλ μλ₯Ό popνμ¬ - λΌλ μΆλ ₯μ μ»κ² λλ€.
κ·Έ λ€μμΌλ‘ νμν μλ '3'μ΄λ€. νμ¬ μ€νμλ (1, 2, 3)μ΄λΌλ μκ° λ€μ΄μλ€. λ°λ‘ popμ νλ©΄ 3μ μ»μ΄ λΌ μ μμΌλ 3μ popνκ³ -λΌλ μΆλ ₯μ μ»μ΄λΈλ€.
λ€μμΌλ‘ νμν μλ '6'μ΄λ€. νμ¬ μ€νμλ (1, 2)μ΄λΌλ μκ° λ€μ΄μλ€. μ€νμλ 6μ΄λΌλ κ°μ΄ μ‘΄μ¬νμ§ μμΌλ―λ‘ pushλ₯Ό κ³μν΄μ ν΄μ€λ€. μ€νμ (1, 2, 5, 6)μ΄ pushκ° λκ³ + +λΌλ μΆλ ₯μ μ»μ΄λΈλ€. νμν μμΈ '6'μ΄ μ€νμ λ€μ΄μμΌλ―λ‘ μ΄κ²μ popνμ¬ 6μ΄λΌλ μ«μλ₯Ό μ»μ΄λ΄κ³ -μ μΆλ ₯μ μ»λλ€.
μμ κ°μ κ³Όμ μ κ³μνμ¬ λ°λ³΅.