반응형
문제링크:https://www.acmicpc.net/problem/1021
실제 데큐를 사용해서 문제에서의 조건을 실행하며 결과값을 얻는 시뮬레이션 문제였습니다.
저는 c++의 deque를 사용해서 구현하였습니다.
숫자를 탐색할때 왼쪽으로 빼는게 빠른지, 오른쪽으로 빼는게 빠른지
index와 arr.size()를 이용해 위치를 비교하였습니다.
비교적 쉬운 문제 였습니다.
정답코드입니다.
#include <iostream>
#include <deque>
using namespace std;
deque <int> arr;
int n = 0, m = 0;
int cnt = 0;
int arr_m[51];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++)
arr.push_back(i);
for (int i = 0; i < m; i++)
cin >> arr_m[i];
for (int i = 0; i < m; i++) {
int num = arr_m[i];
int num_index = -1;
for (int i = 0; i < arr.size(); i++) {
if (num == arr[i])
num_index = i;
}
// 왼쪽으로 가는게 빠른지 오른쪽으로 가는게 빠른지
//1.왼쪽이 이동하는게 빠를때
if (num_index <= arr.size() - num_index) {
for (int i = 0; i < num_index; i++) {
int val = arr.front();
arr.push_back(val);
arr.pop_front();
cnt++;
}
arr.pop_front();
}
// 2. 오른쪽으로 이동하는게 빠를때
else {
for (int i = arr.size() - 1; i >= num_index; i--) {
int val = arr.back();
arr.push_front(val);
arr.pop_back();
cnt++;
}
arr.pop_front();
}
}
cout << cnt << '\n';
}
반응형
'알고리즘 > 시뮬레이션' 카테고리의 다른 글
[백준] 11559-Puyo Puyo(C++) (0) | 2020.05.03 |
---|---|
[백준] 14891-톱니바퀴(C++) (0) | 2020.04.28 |
[백준] 14500-테트로미노(C++) (0) | 2020.04.14 |
[백준] 14499-주사위 굴리기 (0) | 2020.01.29 |
[백준] 3190-뱀 (0) | 2020.01.29 |