λ¬Έμ
μνμ΄λ μΉ΄λ κΈ°μ μ μ°μ΅νκ³ μλ€. μνμ΄μ μμ λ€λ¦° μΉ΄λλ₯Ό νλμ© λ΄λ €λμ λ°λ₯μ μμΌλ €κ³ νλ€. μνμ΄κ° μΈ μ μλ κΈ°μ μ λ€μ 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μ΄λ€.
μΆλ ₯
μ΄κΈ° μΉ΄λμ μνλ₯Ό μμμλΆν° μμλλ‘ μΆλ ₯νμ¬λΌ.
νμ΄
iλ²μ§Έλ‘ μΉ΄λλ₯Ό λ΄λ €λμμ λ <- μ΄ ννΈμμ iκ° μ¬μ©λκΈ° λλ¬Έμ 0 λμ 1λΆν° μμνλ κ²μ΄ μ’λ€
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
/*
* 1) 1λ² κΈ°μ -> μ μΌ μμ μΉ΄λ λ°λ₯μ λ΄λ €λκΈ° -> μ μΌ μμ λΌμλ£κΈ°
* 2) 2λ² κΈ°μ -> μμμ λ λ²μ§Έ μΉ΄λ λ°λ₯μ λ΄λ €λκΈ° -> μμμ λ λ²μ§Έμ λΌμλ£κΈ°
* 3) 3λ² κΈ°μ -> μ μΌ λ°μ μλ μΉ΄λ λ΄λ €λκΈ° -> μ μΌ λ€μ λΌμλ£κΈ°
* => μ/λ€ λΌμλ£κΈ°κ° μμΌλ―λ‘ dequeλ₯Ό μ΄λ€
*/
deque<int> cardGame(int n, vector<int> &card){
deque<int> dq;
for(int i=1; i<=n; i++){ //
switch (card[i]) {
case 1:
dq.push_front(i);
break;
case 2:
{
int x = dq.front();
dq.pop_front();
dq.push_front(i);
dq.push_front(x);
break;
}
case 3:
dq.push_back(i);
break;
}
}
return dq;
}
int main() {
int n;
cin >> n;
// μ
λ ₯
vector<int> card(n+1, 0);
for (int i=1; i<=n; i++) // iλ²μ§Έλ‘ μΉ΄λλ₯Ό λ΄λ €λμμ λ card[i]λ² κΈ°μ μ μ΄λ€ -> 1λ²μ§ΈλΆν° μμνλ―λ‘ i=1
cin >> card[i];
// μ°μ°
reverse(card.begin()+1, card.end()); // κ±°κΎΈλ‘ μκ°νκΈ° λλ¬Έμ reverse μ¬μ©
deque<int> dq = cardGame(n, card);
// μΆλ ₯
while(!dq.empty()){
cout << dq.front() << " ";
dq.pop_front();
}
}
'β¨ Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/C++] 2504λ²: κ΄νΈμ κ° (0) | 2022.07.31 |
---|---|
[λ°±μ€/C++] 11866λ²: μμΈνΈμ€ λ¬Έμ 0 (0) | 2022.07.31 |
[λ°±μ€/C++] 2108λ²: ν΅κ³ν (0) | 2022.07.24 |
[λ°±μ€/C++] 1213λ²: ν°λ¦°λ둬 λ§λ€κΈ° (0) | 2022.07.24 |
[λ°±μ€/C++] 20920λ²: μλ¨μ΄ μκΈ°λ κ΄΄λ‘μ (0) | 2022.07.17 |
λκΈ