-
[λ°±μ€(BOJ) 1021λ²] νμ νλ ν (C++)PS(Problem Solving)/C++ 2022. 1. 18. 23:14λ°μν
λ¬Έμ λ§ν¬
https://www.acmicpc.net/problem/1021
λ¬Έμ μ 보
μ λ ₯
첫째 μ€μ νμ ν¬κΈ° Nκ³Ό λ½μλ΄λ €κ³ νλ μμ κ°μ Mμ΄ μ£Όμ΄μ§λ€. Nμ 50λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄κ³ , Mμ Nλ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. λμ§Έ μ€μλ μ§λ―Όμ΄κ° λ½μλ΄λ €κ³ νλ μμ μμΉκ° μμλλ‘ μ£Όμ΄μ§λ€. μμΉλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , Nλ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ λ¬Έμ μ μ λ΅μ μΆλ ₯νλ€.
νμ΄
λ¬Έμ λ₯Ό μ΄ν΄νλ κ²μ΄ μλΉν νλ€μλ€. μλ°©ν₯ μν νλΌλ κ²μ ν΅ν΄ λ±μ μ΄μ©ν΄μ νμ΄ν μ μλ€λ κ²μ μκ°ν μ μλ€. μμλ₯Ό λ€μ΄μ λ¬Έμ λ₯Ό μ΄ν΄ν΄λ³΄μ. λ§μ½ n = 10μμ 4λ₯Ό λ½μμΌ νλ€κ³ μκ°ν΄λ³΄μ.
λ± : 1 2 3 4 5 6 7 8 9 10
μ¬κΈ°μμ 4λ₯Ό λ½μλ €λ©΄ μΌμͺ½μΌλ‘ μ΄λν΄μ λ½λ 2λ² μ°μ°μ΄ μ€λ₯Έμͺ½μΌλ‘ μ΄λνλ 3λ² μ°μ°λ³΄λ€ λ μ μ νμλ‘ 4λ₯Ό μΆμΆν μ μλ€λ κ²μ μ μ μλ€. μ΄λ₯Ό ν΅ν΄ λ±μ λ€μ΄μλ μμμ κ°μ(size)μ μ λ° λ³΄λ€ μμ μμΌλ©΄ 2λ² μ°μ°μ΄ λ μ μ νμλ‘ μΆμΆν μ μκ³ , μλλΌλ©΄ 3λ² μ°μ°μ΄ λ μ μ νμλ‘ μΆμΆν μ μλ€λ κ²μ μ μ μλ€.
μμ€ μ½λ
#include <bits/stdc++.h> using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; deque<int> DQ; for (int i = 1; i <= n; i++) { DQ.push_back(i); } int ans = 0; while (m--) { int num; cin >> num; int idx = 0; for (int i = 0; i < DQ.size(); i++) { if (DQ[i] == num) { idx = i; break; } } if (idx <= DQ.size() / 2) { // λ±μ μ λ°λ³΄λ€ μμ μμΌλ©΄ 2λ² μ°μ°μ΄ λ λΉ λ¦. for (int i = 0; i < idx; i++) { DQ.push_back(DQ.front()); DQ.pop_front(); ans++; } DQ.pop_front(); } else { // λ±μ μ λ°λ³΄λ€ λ€μ μμΌλ©΄ 3λ² μ°μ°μ΄ λ λΉ λ¦. for (int i = 0; i < DQ.size() - idx; i++) { DQ.push_front(DQ.back()); DQ.pop_back(); ans++; } DQ.pop_front(); } } cout << ans; return 0; }
λ°μν