우당탕탕 개발일지

[알고리즘] 백준 2828번 사과 담기 문제 본문

알고리즘

[알고리즘] 백준 2828번 사과 담기 문제

민아당긴아 2023. 10. 2. 11:08

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

 

2828번: 사과 담기 게임

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

www.acmicpc.net

접근 방법/변수 설정

단계별로 나눠서 생각한다. k단계와 (k+1)단계의 상황을 생각해보고, 이를 일반화한다.

바구니의 위치를 기준으로 사과가 떨어지는 위치에 따라 이동거리가 달라짐을 파악한다.

 

문제 풀이

N, M = map(int, input().split())
a = int(input())
s=1
answer=0
for k in range(a):
  i = int(input())
  if s<=i<(s+M): l=0
  elif i<s: l=i-s
  else:l=i-s-M+1 
  s+=l
  answer+=abs(l)
print(answer)