본문 바로가기
python-algorithm

백준 2828 사과 담기 게임

by 무적김두칠 2021. 8. 25.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
n,m= map(int, sys.stdin.readline().split())
j=int(sys.stdin.readline())
left=1
ans=0
for i in range(j):
    apple=int(sys.stdin.readline())
    if apple<left:
        ans+=left-apple
        left=apple
    elif apple > left+-1:
        ans+= apple-(left+m-1)
        left=apple-m+1
print(ans)
cs

이게 백준문제는 문제 해석이 조금 어려워서
바구니의 왼쪽 끝을 기준으로 잡으면 되고

첫번째 예제의 첫번째 케이스를 곰곰히 생각해보면
바구니의 사이즈가 1이고 왼쪽 1칸만 차지하고 있으니 2번째 칸에 떨어지는 사과는 못잡습니다
즉, 오른쪽 끝은 못잡는다고 해석하는게 편리합니다.

따라서 Line 8-10은
사과가 왼쪽끝보다 더 왼쪽인 경우 그 차이만큼 이동하고
사과가 떨어진곳이 새로운 바구니의 왼쪽끝이됩니다.

line11-13은
사과가 오른쪽 끝 -1 (오른쪽끝은 못잡기때문에 오른쪽끝에서 -1한거만 잡을수있음) 보다 큰경우
바구니가 오른쪽으로 가야합니다

반응형

'python-algorithm' 카테고리의 다른 글

Leetcode 1877. Minimize Maximum Pair Sum in Array  (0) 2021.08.26
Leetcode 561. Array Partition I  (0) 2021.08.26
백준 2108 통계학  (0) 2021.08.24
백준 10773 제로  (0) 2021.08.24
백준 11651 좌표 정렬하기 2  (0) 2021.08.24

댓글