https://www.acmicpc.net/problem/18115
18115λ²: μΉ΄λ λκΈ°
μνμ΄λ μΉ΄λ κΈ°μ μ μ°μ΅νκ³ μλ€. μνμ΄μ μμ λ€λ¦° μΉ΄λλ₯Ό νλμ© λ΄λ €λμ λ°λ₯μ μμΌλ €κ³ νλ€. μνμ΄κ° μΈ μ μλ κΈ°μ μ λ€μ 3κ°μ§λ€. μ μΌ μμ μΉ΄λ 1μ₯μ λ°λ₯μ λ΄λ €λλλ€.
www.acmicpc.net
λ¬Έμ
μνμ΄λ μΉ΄λ κΈ°μ μ μ°μ΅νκ³ μλ€. μνμ΄μ μμ λ€λ¦° μΉ΄λλ₯Ό νλμ© λ΄λ €λμ λ°λ₯μ μμΌλ €κ³ νλ€. μνμ΄κ° μΈ μ μλ κΈ°μ μ λ€μ 3κ°μ§λ€.
- μ μΌ μμ μΉ΄λ 1μ₯μ λ°λ₯μ λ΄λ €λλλ€.
- μμμ λ λ²μ§Έ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. μΉ΄λκ° 2μ₯ μ΄μμΌ λλ§ μΈ μ μλ€.
- μ μΌ λ°μ μλ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. μΉ΄λκ° 2μ₯ μ΄μμΌ λλ§ μΈ μ μλ€.
μνμ΄λ μ²μμ μΉ΄λ Nμ₯μ λ€κ³ μλ€. μΉ΄λμλ 1λΆν° NκΉμ§μ μ μκ° μ€λ³΅λμ§ μκ² μ ν μλ€. κΈ°μ μ Nλ² μ¬μ©νμ¬ μΉ΄λλ₯Ό λ€ λ΄λ €λμμ λ, λμ¬ μλ μΉ΄λλ€μ νμΈνλλ μμμλΆν° μμλλ‘ 1, 2, …, Nμ΄ μ ν μμλ€!
λλ μνμ΄λ μ²μμ μΉ΄λκ° μ΄λ»κ² λ°°μΉλμ΄ μμλμ§ κΆκΈν΄μ‘λ€. μ²μ μΉ΄λμ μνλ₯Ό μΆλ ₯νμ¬λΌ.
μ λ ₯
첫 λ²μ§Έ μ€μλ N (1 ≤ N ≤ 106)μ΄ μ£Όμ΄μ§λ€.
λ λ²μ§Έ μ€μλ κΈΈμ΄κ° NμΈ μμ΄ Aκ° μ£Όμ΄μ§λ€. Aiκ° xμ΄λ©΄, iλ²μ§Έλ‘ μΉ΄λλ₯Ό λ΄λ €λμ λ xλ² κΈ°μ μ μΌλ€λ λ»μ΄λ€. Aiλ 1, 2, 3 μ€ νλμ΄λ©°, Anμ νμ 1μ΄λ€.
μΆλ ₯
μ΄κΈ° μΉ΄λμ μνλ₯Ό μμμλΆν° μμλλ‘ μΆλ ₯νμ¬λΌ.
νμ΄
κ²°κ³Ό μΉ΄λμΈ 1~nκΉμ§μ μκ° μμλλ‘ μλ€κ³ κ°μ νκ³ κ° κΈ°μ λ€μ κ±°κΎΈλ‘ μννλ€
- μ μΌ μμ μΉ΄λ 1μ₯μ λ°λ₯μ λ΄λ €λλλ€. -> μΉ΄λλ₯Ό 맨 μλ‘ λ£λλ€
- μμμ λ λ²μ§Έ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. -> μΉ΄λλ₯Ό μμμ λλ²μ§Έ μμΉλ‘ λ£λλ€
-> 맨 μ μΉ΄λ pop μνν ν΄λΉ μΉ΄λλ₯Ό pushνκ³ popνλ μΉ΄λ λ€μ push - μ μΌ λ°μ μλ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. -> μΉ΄λλ₯Ό μ μΌ λ°μΌλ‘ λ£λλ€
μΉ΄λλ₯Ό μμ λ£μλ€κ° λ°μ λ£μλ€κ° λ°©ν₯μ΄ μλ€κ°λ€ νλ―λ‘ μλ°©ν₯μΈ λ±μ μ¬μ©ν΄λ³΄μ
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <stack>
#include <deque>
using namespace std;
int main() {
int n;
cin >> n;
stack<int> skills;
for(int i=0; i<n; i++) {
int input;
cin >> input;
skills.push(input);
}
deque<int> ans;
for(int i=1; i<=n; i++){ // iλ²μ§Έ μνλλ iλ² μΉ΄λλ₯Ό μμ§μΈλ€
int skill = skills.top();
skills.pop(); // μ€ν¬μ μ΅κ·Όκ²λΆν° κΊΌλ΄μ κ±°κΎΈλ‘ μν
switch (skill) {
case 1: // μ μΌ μμ μΉ΄λ 1μ₯μ λ°λ₯μ λ΄λ €λλλ€. -> i μΉ΄λλ₯Ό 맨 μλ‘ λ£λλ€
ans.push_front(i);
break;
case 2: // μμμ λ λ²μ§Έ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. -> i μΉ΄λλ₯Ό μμμ λλ²μ§Έ μμΉλ‘ λ£λλ€
{
int top_card = ans.front();
ans.pop_front();
ans.push_front(i);
ans.push_front(top_card);
break;
}
case 3: // μ μΌ λ°μ μλ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. -> i μΉ΄λλ₯Ό μ μΌ λ°μΌλ‘ λ£λλ€
ans.push_back(i);
break;
}
}
while(!ans.empty()){
cout << ans.front() << " ";
ans.pop_front();
}
return 0;
}
/*
*/
solutionν¨μ λ²μ (νλ‘κ·Έλλ¨Έμ€)
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <stack>
#include <deque>
using namespace std;
deque<int> solution(int n, stack<int> &skills) {
deque<int> ans;
for(int i=1; i<=n; i++){ // iλ²μ§Έ μνλλ iλ² μΉ΄λλ₯Ό μμ§μΈλ€
int skill = skills.top();
skills.pop(); // μ€ν¬μ μ΅κ·Όκ²λΆν° κΊΌλ΄μ κ±°κΎΈλ‘ μν
switch (skill) {
case 1: // μ μΌ μμ μΉ΄λ 1μ₯μ λ°λ₯μ λ΄λ €λλλ€. -> i μΉ΄λλ₯Ό 맨 μλ‘ λ£λλ€
ans.push_front(i);
break;
case 2: // μμμ λ λ²μ§Έ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. -> i μΉ΄λλ₯Ό μμμ λλ²μ§Έ μμΉλ‘ λ£λλ€
{
int top_card = ans.front();
ans.pop_front();
ans.push_front(i);
ans.push_front(top_card);
break;
}
case 3: // μ μΌ λ°μ μλ μΉ΄λλ₯Ό λ°λ₯μ λ΄λ €λλλ€. -> i μΉ΄λλ₯Ό μ μΌ λ°μΌλ‘ λ£λλ€
ans.push_back(i);
break;
}
}
return ans;
}
int main() {
int n;
cin >> n;
stack<int> skills;
for(int i=0; i<n; i++) {
int input;
cin >> input;
skills.push(input);
}
deque<int> ans = solution(n, skills);
while(!ans.empty()){
cout << ans.front() << " ";
ans.pop_front();
}
return 0;
}
/*
*/
'ποΈ ICPC Sinchon > Linear Data Structure' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ S3][C++] λ°±μ€ 2910λ²: λΉλ μ λ ¬ (0) | 2022.12.28 |
---|---|
[BOJ S1][C++] λ°±μ€ 4889λ² : μμ μ μΈ λ¬Έμμ΄ (0) | 2022.09.14 |
[BOJ S5][C++] λ°±μ€ 11866λ² : μμΈνΈμ€ λ¬Έμ 0 (0) | 2022.09.12 |
[BOJ S5][C++] λ°±μ€ 7785λ² : νμ¬μ μλ μ¬λ (0) | 2022.09.12 |
[BOJ S5][C++] λ°±μ€ 11723λ² : μ§ν© (0) | 2022.09.10 |