[백준] ★ 2828번 사과 담기 게임 ★

거북이·2023년 1월 7일
0

백준[실버5]

목록 보기
68/114
post-thumbnail

💡문제접근

문제에 대한 이해는 어렵지 않았는데 이를 코딩으로 옮기는 과정에서 계속 번번이 막혀서 시간이 좀 오래 걸렸던 문제였다.

질문게시판에 있는 반례 일부는 통과했지만 일부는 통과되지 않아서 계속 오답을 반복했다.

①. 만약 시작 지점의 값이 사과가 떨어지는 지점보다 왼쪽에 있다면?
②. 만약 시작 지점의 값이 사과가 떨어지는 지점보다 오른쪽에 있다면?
③. 만약 사과가 떨어지는 지점이 시작 지점과 끝 지점 사이의 값이라면?
이렇게 세 가지 경우로 나눠 종이에 그려가며 계산을 반복했다.

💡코드(메모리 : 30616KB, 시간 : 36ms)

N, M = map(int, input().split())
J = int(input())
min_distance = 0
start = 1
end = M
for _ in range(J):
    position = int(input())
    if start <= position <= end:
        continue
    elif start > position:
        min_distance += start - position
        end -= start - position
        start = position
    else:
        min_distance += position - end
        start += position - end
        end = position
print(min_distance)

💡소요시간 : 2h

0개의 댓글