# 본인 풀이
#include<bits/stdc++.h>
using namespace std;
int m, n, apple, pos, ret, head, tail;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// n : 스크린 너비 , m : 바구니 너비
cin >> n >> m;
head = 1;
tail = m;
// 사과 개수
cin >> apple;
for (int i = 0; i < apple; i++){
cin >> pos;
// 사과가 바구니 안에 들어올때
if(pos >= head && pos <= tail){
continue;
}else if(pos < head){
ret += head - pos;
tail -= head - pos;
head = pos;
}else if(pos > tail){
ret += pos - tail;
head += pos - tail;
tail = pos;
}
}
cout << ret << "\n";
return 0;
}
- 바구니 왼쪽 끝과 오른쪽 끝을 두어 사과가 떨어지는 포지션에 따라 이동시키는 로직으로 구성하였다.
- 중간에 ret, head, tail을 계산하는 과정에서 어떤 연산이 먼저 진행되어야 하는지 중요하게 고려되어야 하는 점 외에 어려운 것은 없었음.
# 모범 답안
본인 풀이와 동일함.