반응형
간단한 구현 문제였습니다.
풀이방법
1. left는 바구니의 왼쪽 끝, right는 바구니의 오른쪽 끝으로 정해 변수를 선언합니다.
2. 최소로 움직이는 것은 left보다 떨어질 사과의 위치가 더 작은 경우와 right보다 위치가 더 큰 경우에만 움직이는 것입니다. 따라서 두 경우에 해당할 때만 위치를 옮겨줍니다.
3. 이동거리의 최솟값 ans를 출력합니다.
Code
#include <bits/stdc++.h>
using namespace std;
int n,m,j, ans;
int main(){
cin >> n >> m >> j;
int left = 1,right = m;
while(j--){
int pos;
cin >> pos;
while(left > pos || right < pos){
if(pos > right) right++, ans++, left++;
if(pos < left) right--,ans++,left--;
}
}
cout << ans << '\n';
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 8972 번 : 미친 아두이노 (0) | 2021.04.29 |
---|---|
(C++) - 백준(BOJ) 11559번 : Puyo Puyo (0) | 2021.04.29 |
(C++) - 백준(BOJ) 2526번 : 싸이클 (0) | 2021.04.24 |
(C++) - 백준(BOJ) 2174번 : 로봇 시뮬레이션 (0) | 2021.04.23 |
(C++) - 백준(BOJ) 14499번 : 주사위 굴리기 (0) | 2021.04.23 |