백준 #2828 사과 담기 게임
문제 링크
문제 설명
$1~N$위치에 사과가 무작위 위치에서 순서대로 떨어진다. 사과는 한개씩 떨어지고 사과를 받으면 다음 사과가 떨어진다. 아래쪽에 크기 $M$의 바구니가 있을때 바구니를 좌, 우로 최소한 움직이면서 사과를 받을 때 바구니를 움직인 총 거리를 구하는 문제
코드
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
K = int(input())
l, r = 1, M
ans = 0
for _ in range(K):
x = int(input())
if l <= x <= r:
continue
if x < l:
ans += (l - x)
r -= (l - x)
l = x
else:
ans += (x - r)
l += (x - r)
r = x
print(ans)
풀이
현재 바구니의 양 끝이 사과의 위치로부터 좌, 우에 있는 경우 움직여주고 사과의 위치를 포함하는 경우면 그대로 둔다.
댓글남기기