현재 인터넷 서핑 중에 여러 개의 탭을 켜 놓았는데,
필요한 탭(l~r)을 제외한 나머지 탭을 최대한 빠르게 닫았을 때의 시간을 출력하라.
탭은 1~n까지 색인화되어 있다.
현재 커서 위치가 pos로 주어진다.
l의 왼쪽은 한 번에 모두 닫을 수 있다.
r의 오른쪽은 한 번에 모두 닫을 수 있다.
pos에서 한 칸씩 이동할 때마다 1의 시간이 걸린다.
Input
4개의 자연수가 입력으로 주어진다.
n, pos, l, r (1 <= n <= 100, 1 <= pos <= n, 1 <= l <= r <= n)
Output
[l, r] 외의 탭을 닫는 데에 걸리는 최소 시간을 자연수로 출력하라.
// C++
#include <bits/stdc++.h>
using namespace std;
int main() {
short n, pos, l, r;
cin >> n >> pos >> l >> r;
short res = 0;
if (l == 1 && r != n) {
res = abs(pos - r) + 1;
cout << res;
return 0;
}
else if (r == n && l != 1) {
res = abs(pos - l) + 1;
cout << res;
return 0;
}
else if (l == 1 && r == n) {
cout << res;
return 0;
}
else {
short lDistance = abs(pos - l);
short rDistance = abs(pos - r);
if (lDistance < rDistance) {
res = lDistance + r - l + 2;
cout << res;
return 0;
}
else {
res = rDistance + r - l + 2;
cout << res;
return 0;
}
}
}