#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void) {
int N, M, cnt, move = 0;
scanf("%d %d", &N, &M);
scanf("%d", &cnt);
int drop;
int f = M, r = 1;
for (int i = 0; i < cnt; i++) {
scanf("%d", &drop);
if (drop <= N && drop >= 1) {
if (drop > f) {
while (1) {
if (f == drop) break;
f++; r++; move++;
}
}
else if (drop < r) {
while (1) {
if (r == drop) break;
f--; r--; move++;
}
}
}
}
printf("%d", move);
return 0;
}
그리디 알고리즘( Greedy Algorithm ) : 매번 선택에서 가장 최적의 값을 도출하는 것을 목표로 하는 알고리즘.
2828번에서는 가장 적게 바구니가 움직여야 함으로 매번 가장 적은 이동을 목표로 움직여야 함.
-> 떨어지는 공이 바구니 범위 밖이면 바구니의 끝을 떨어지는 공의 위치로 움직이게 하면됨.
+while(1)으로 무한루프 문을 짤 때는 탈출조건을 while의 맨 앞줄에 넣는게 바람직 한 것 같다..!