:link:문제 링크

[2828 사과 담기 게임]

:question:문제 설명

$1~N$위치에 사과가 무작위 위치에서 순서대로 떨어진다. 사과는 한개씩 떨어지고 사과를 받으면 다음 사과가 떨어진다. 아래쪽에 크기 $M$의 바구니가 있을때 바구니를 좌, 우로 최소한 움직이면서 사과를 받을 때 바구니를 움직인 총 거리를 구하는 문제

:pencil2:코드

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)

:memo:풀이

현재 바구니의 양 끝이 사과의 위치로부터 좌, 우에 있는 경우 움직여주고 사과의 위치를 포함하는 경우면 그대로 둔다.

댓글남기기