본문 바로가기

코딩테스트/Python

[Python] 백준 #2828 - 사과 담기 게임

문제


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

 

2828번: 사과 담기 게임

상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M<N) 플레이어는 게임을 하는 중에 바구니를

www.acmicpc.net

 

 

 

풀이


n,m = map(int,input().split())
apple = int(input())
m-=1 # 이후 계산을 편하게 하기 위해서 바구니 크기를 -1 해준다
left = 1 # 바구니 왼쪽 위치
right = left + m # 바구니 오른쪽 위치
answer=0
for _ in range(apple):
    tmp = int(input())
    if left <= tmp <= right: # 사과가 바구니 범위 안에 속하면 
        continue
    elif left > tmp: # 사과가 바구니보다 왼쪽에 떨어지면
        answer+= left - tmp # 왼쪽으로 이동한 거리만큼 답을 더해준다
        left = tmp # 왼쪽으로 이동
        right = left + m # 왼쪽으로 이동
    elif right < tmp: # 사과과 바구니보다 오른쪽에 떨어지면
        answer += tmp - right # 오른쪽으로 이동한 거리만큼 답을 더해준다
        right = tmp # 오른쪽으로 이동
        left = right - m # 오른쪽으로 이동
print(answer)