Koala - 15기/기초 알고리즘 스터디

[백준/Python3] 2828번: 사과 담기 게임

trymimi 2024. 7. 22. 03:22

https://www.acmicpc.net/problem/2828


문제풀이

-바구니의 왼쪽과 오른쪽을 따로 생각하여 움직이도록 한다. 오른쪽 보다 숫자가 크다면 움직이고, 왼쪽보다 작으면 움직이는 식으로 최소한의 움직임을 지정한다.


코드

n, m = map(int, input().split())
j = int(input())
s = 0		#누적 움직임
l = 1		#왼쪽 좌표
r = m		#오른쪽 좌표
for i in range(j):
    a = int(input())	#사과 위치
    if a > r:			#오른쪽보다 클 때
        s += a - r
        r = a
        l = a - m + 1
    elif a < l:			#왼쪽보다 작을 때
        s += l - a
        l = a
        r = l + m - 1
print(s)