https://www.acmicpc.net/problem/1021
λ¬Έμ
μ§λ―Όμ΄λ Nκ°μ μμλ₯Ό ν¬ν¨νκ³ μλ μλ°©ν₯ μν νλ₯Ό κ°μ§κ³ μλ€. μ§λ―Όμ΄λ μ΄ νμμ λͺ κ°μ μμλ₯Ό λ½μλ΄λ €κ³ νλ€.
μ§λ―Όμ΄λ μ΄ νμμ λ€μκ³Ό κ°μ 3κ°μ§ μ°μ°μ μνν μ μλ€.
- 첫 λ²μ§Έ μμλ₯Ό λ½μλΈλ€. μ΄ μ°μ°μ μννλ©΄, μλ νμ μμκ° a1, ..., akμ΄μλ κ²μ΄ a2, ..., akμ κ°μ΄ λλ€.
- μΌμͺ½μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄, a1, ..., akκ° a2, ..., ak, a1μ΄ λλ€.
- μ€λ₯Έμͺ½μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄, a1, ..., akκ° ak, a1, ..., ak-1μ΄ λλ€.
νμ μ²μμ ν¬ν¨λμ΄ μλ μ Nμ΄ μ£Όμ΄μ§λ€. κ·Έλ¦¬κ³ μ§λ―Όμ΄κ° λ½μλ΄λ €κ³ νλ μμμ μμΉκ° μ£Όμ΄μ§λ€. (μ΄ μμΉλ κ°μ₯ μ²μ νμμμ μμΉμ΄λ€.) μ΄λ, κ·Έ μμλ₯Ό μ£Όμ΄μ§ μμλλ‘ λ½μλ΄λλ° λλ 2λ², 3λ² μ°μ°μ μ΅μκ°μ μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ νμ ν¬κΈ° Nκ³Ό λ½μλ΄λ €κ³ νλ μμ κ°μ Mμ΄ μ£Όμ΄μ§λ€. Nμ 50λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄κ³ , Mμ Nλ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. λμ§Έ μ€μλ μ§λ―Όμ΄κ° λ½μλ΄λ €κ³ νλ μμ μμΉκ° μμλλ‘ μ£Όμ΄μ§λ€. μμΉλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , Nλ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λ¬Έμ μ μ λ΅μ μΆλ ₯νλ€.
νμ΄
νμ νμ μ
λμ μλ μμμ κ°μ κ°μ λ€λ₯Έλ°©ν₯ λμ pushνκ³
μλ μλ μμλ pop νλ λ°©μμΌλ‘ μ½κ² ꡬν κ°λ₯νλ€.
q.push(q.start());
q.pop();
λ€λ§ μ΄ λ¬Έμ μ ν¬μΈνΈλ λ°©ν₯μ΄ μΌμͺ½κ³Ό μ€λ₯Έμͺ½ λκ°λΌλ μ μ΄λ€.
λ°λΌμ μμͺ½ λ€μͺ½ μκ΄μμ΄ μμͺ½μΌλ‘ pop push μ°μ°μ΄ κ°λ₯ν λ±(depue)λ₯Ό μ΄μ©ν΄μΌνλ€.
// μΌμͺ½ νμ
d.push_front(d.back());
d.pop_back();
// μ€λ₯Έμͺ½ νμ
d.push_back(d.front());
d.pop_front();
μ΄μ κ° κ²½μ°μ λ°λΌ
μ°μ°μ μ΅μν ν μ μλ νμ λ°©ν₯μ ꡬνκ³
ν΄λΉ λ°©ν₯μΌλ‘ νμ λ§ νλ©΄ λλ€.
μ΄λ νμ νμλ μλμ μ리λ₯Ό μ μ μλλ‘
μ°μ° μμμ λ±μ μμΉλ₯Ό κ°μΌλ‘ κ°μ§λ μμλ€μ μμμ λ§κ² λ£μ΄λμλ€
μ΄μ forλ¬ΈμΌλ‘ νμ΄λ³΄λ©΄μ (μ§κΈ 보λ findμ΄μ©ν΄μ μμ μΈλ±μ€λ₯Ό ꡬνλ©΄ λ νΈνμν λ°)
(λ±μ νλ μ€νκ³Ό λ¬λ¦¬ κ° μμμ iteratorλ₯Ό μ΄μ©ν μ κ·Όμ΄ κ°λ₯νλ€ ex. d[i])
ν΄λΉ κ°μ΄ λκ³Ό μμμ€ μ΄λμ λ κ°κΉμ΄μ§ μΉ΄μ΄νΈν΄μ μ€λ₯Έμͺ½ μΌμͺ½ λ°©ν₯μ μ νλ©΄ λλ€
λ¨, μ΄λ μ£Όμν μ
μΌμͺ½μ μμλΆν° μΉ΄μ΄νΈνκΈ° λλ¬Έμ μ΄κΉκ°μ΄ 0μ΄μ§λ§
μ€λ₯Έμͺ½μ λμμλΆν° μΉ΄μ΄νΈνκΈ° λλ¬Έμ μ΄κΉκ°μ΄ 1μ΄λ€
(μμμμ 맨λμΌλ‘ κ°λ μ°μ°μ΄ νλ²μ΄ μΆκ°λμ΄μμ΄μΌ ν¨)
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <deque>
using namespace std;
int ans, n, m;
deque<int> d;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
// μ리μ ν΄λΉνλ μμ λ£μ΄λκΈ°
cin >> n >> m;
for(int i=1; i<=n; i++) d.push_back(i);
while(m--){
// μ
λ ₯
int e;
cin >> e;
// λ κ°κΉμ΄ λ°©ν₯ κ³ λ₯΄κΈ°
int right=1, left=0;
for(int i=0; true; i++){
if(d[i] == e) break;
left++;
}
for(int i=d.size()-1; true; i--){
if(d[i] == e) break;
right++;
}
// λ°©ν₯μ λ§κ² λ리기
if(right < left){
for(int i=0; i<right; i++){
d.push_front(d.back());
d.pop_back();
}
ans += right;
} else {
for(int i=0; i<left; i++){
d.push_back(d.front());
d.pop_front();
}
ans += left;
}
d.pop_front();
}
cout << ans;
return 0;
}
/*
*/
'π Baaaaaarking > 0x07κ° - λ±' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ P5][C++] 11003λ²: μ΅μκ° μ°ΎκΈ° (0) | 2022.02.25 |
---|---|
[BOJ G5][C++] λ°±μ€ 5430λ²: AC (0) | 2022.02.23 |