[๋ฐฑ์ค(BOJ)] ํ์ ํ๋ ํ(1021) C++
๋ฌธ์ : BOJ_1021๋ฒ ํ์ ํ๋ ํ
๋ฌธ์ ์ค๋ช
Deque
1 ~ N๊น์ง์ ์๊ฐ ์๋ฐฉํฅ ์ํ ํ์ ๋์ด๋์ด ์๋ ์ํ์์ M ๊ฐ์ ์์๋ฅผ ๋ฝ์์ผ ํฉ๋๋ค.
์ด๋ ๋์ด๋์ด ์๋ ๋ฐฉ์์ด ์ํ ํ์ด๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ ์์น์ ์์๋ง ๋ฝ์๋ผ ์ ์๊ณ , ์ฒซ ๋ฒ์งธ ์์น๊ฐ ์๋๋ผ๋ฉด ์ํ์ผ๋ก ์ผ์ชฝ ํน์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ํ๋ฉฐ ์์๋ฅผ ์ฒซ ๋ฒ์งธ ์์น๋ก ์ด๋์์ผ ๋ฝ์์ผ ํฉ๋๋ค.
์ด๋ ์ผ์ชฝ ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ํ๋ ํ์์ ์ต์๋ฅผ ๊ตฌํด์ผ ํฉ๋๋ค.
Solution
N์ด 50๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ๋ฌด์จ ๋ฐฉ๋ฒ์ ์ฐ๋ ๊ตฌํ๋ง ํด๋ธ๋ค๋ฉด ์ ๋ต ์ฒ๋ฆฌ๊ฐ ๋ ๊ฒ์
๋๋ค.
์ ๋ deque์ ์ฌ์ฉํ๋๋ฐ, ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ฝ์ , ์ญ์ ํ ์ ์๋ค.
- ๋ง์ง๋ง ์์๋ฅผ ์ฝ์ , ์ญ์ ํ ์๋ ์๋ค.
- ์ธ๋ฑ์ค๋ฅผ ์ํํ๋ฉด์ ํด๋น ์ธ๋ฑ์ค ์์ ์ด๋ค ์๊ฐ ๋ค์ด์๋์ง ํ์ธํ ์ ์๋ค.
์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ํํ๊ธฐ ์ , ์ธ๋ฑ์ค๋ฅผ ์ํํ์ฌ ํด๋นํ๋ ์๊ฐ ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋์ง ํ์ธํ๊ณ , ๊ทธ ์ธ๋ฑ์ค์deque.size()
๋ฅผ ๋น๊ตํ๋ฉฐ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธธ์ง, ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธธ์ง ์ ํ๋ฉด์ ์งํํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.
Description
- ์ค์ ๋ก ์์ ๋ฅผ ๋ง๋ค์ด ๋๊ณ , ์์ ์์ deque์ ์ ์ฒด ์ฌ์ด์ฆ์ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํด๋ณด๊ณ ์์ ์ง๋ฉด ํธํฉ๋๋ค.
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int main(void) {
int N, M;
cin >> N >> M;
deque<int> d;
for (int i = 1; i <= N; i++) d.push_back(i);
int result = 0;
for (int i = 0; i < M; i++) {
int now;
cin >> now;
int idx = 0;
for (int i = 0; i < d.size(); i++) {
if (now == d[i]) {
idx = i + 1;
break;
}
}
if (idx-1 < d.size() - idx+1) {
result += idx - 1;
for (int i = 1; i < idx; i++) {
int val = d.front();
d.push_back(val);
d.pop_front();
}
d.pop_front();
}
else {
result += d.size() - idx+1;
for (int i = 1; i <= d.size() - idx; i++) {
int val = d.back();
d.push_front(val);
d.pop_back();
}
d.pop_back();
}
}
cout << result << '\n';
return 0;
}
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ํ์ ํ๊ธฐ์(1918) (0) | 2022.03.10 |
---|---|
[BOJ] ํ์ด์ ๋ฐํด(2840) (0) | 2022.03.10 |
[BOJ] ์ค๋ฅด๋ง ์(11057) (0) | 2022.03.09 |
[BOJ] ์ ๊ณฑ์์ ํฉ(1699) (0) | 2022.03.09 |
[BOJ] ๋์ 2(2294) (0) | 2022.03.09 |