티스토리 뷰

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

 

2828번: 사과 담기 게임

문제 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M 입력 첫째 줄에 N과 M이 주어진다. (1 ��

www.acmicpc.net

 

[소스 코드]

 

n, m = map(int, input().split())           # 스크린 크기, 바구니 크기
j = int(input())                           # 사과의 개수

apples = [int(input()) for _ in range(j)]  # 사과의 위치를 담은 리스트

size = m - 1                               # 바구니 크기 [왼쪽 제외]
left = 1                                   # 바구니 왼쪽 끝의 위치
right = left + size                        # 바구니 오른쪽 끝의 위치
count = 0

for apple in apples:
  if left <= apple <= right:               # 바구니 안에 들어갈 수 있는 위치라면 바구니를 움직이지 않음 [없어도 됨]
    continue
    
  if apple < left:                         # 사과가 바구니 왼쪽에 있는 경우
    count += abs(left - apple)             # 바구니 왼쪽을 사과의 위치까지 이동한 횟수
    left = apple                           # 바구니 왼쪽을 사과의 위치까지 이동
    right = apple + size                   # 바구니 오른쪽도 이동
    continue

  if apple > right:                        # 사과가 바구니 오른쪽에 있는 경우
    count += abs(apple - right)            # 바구니 오른쪽을 사과의 위치까지 이동한 횟수
    left = apple - size                    # 바구니 왼쪽도 이동
    right = apple                          # 바구니 오른쪽을 사괴의 위치까지 이동

print(count)

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함