BOJ/백준-2828-python

cosmos·2021년 7월 16일
0
post-thumbnail
post-custom-banner

문제📖

풀이🙏

  • 첫째 줄에 N과 M이 주어진다.
  • 둘째 줄에 떨어지는 사과의 개수 j가 주어진다.
  • 다음 j개 줄에는 사과가 떨어지는 위치가 순서대로 주어진다.
  • 모든 사과를 담기 위해서 바구니가 이동해야 하는 거리의 최솟값을 출력한다.
  • 상근이는 오락실에서 바구니를 옮기는 개노잼 게임을 한다.
  • 스크린은 n칸으로 나누어져 있으며, 스크린의 아래쪽에는 m칸을 차지하는 바구니가 있다.
  • 플레이어는 바구니를 왼쪽이나 오른쪽으로 이동할 수 있으며 경계를 넘어갈 순 없다.
  • 가장 처음에 바구니는 왼쪽 m칸을 차지하고 있다.

코드💻

# boj, 2828 : 사과 담기 게임, python3
# 그리디 알고리즘
import sys

def apple_game(n,m,l):
    basket = m - 1
    left = 1
    right = left + basket
    result = 0
    
    for x in l:
        if x < left:
            result += left - x
            left, right = x, x + basket
        elif x > right:
            result += x - right
            left, right = x - basket, x
    
    return result

N, M = map(int, sys.stdin.readline().split())
j = int(sys.stdin.readline())
l = [int(sys.stdin.readline()) for i in range(j)]

print(apple_game(N,M,l))

결과😎

출처 && 깃허브📝

boj
github

post-custom-banner

0개의 댓글