고층 건물의 엘리베이터는 현재 층에서 사용자가 요청한 층으로 이동한다.
엘리베이터는 1층에서 시작하며, 여러 번의 층 이동 요청을 순서대로 처리한다.
각 요청은 현재 층을 기준으로 이동할 층수를 의미한다.
- 양수이면 위쪽으로 이동한다.
- 음수이면 아래쪽으로 이동한다.
- 이동 결과가 1층보다 낮아지는 요청은 무시한다.
- 이동 결과가 건물의 최고층보다 높아지는 요청도 무시한다.
- 요청이 무시되면 엘리베이터는 현재 층에 그대로 머무른다.
모든 이동 요청을 처리한 후 최종 층수와 실제 이동한 총 층수를 계산하는 프로그램을 작성하시오.
첫째 줄에 건물의 최고층 (F)와 이동 요청 횟수 (N)이 공백으로 구분되어 주어진다.
둘째 줄에 각 이동 요청이 공백으로 구분되어 주어진다.
첫째 줄에 엘리베이터의 최종 층수를 출력한다.
둘째 줄에 엘리베이터가 실제로 이동한 총 층수를 출력한다.
- (2 \leq F \leq 100)
- (1 \leq N \leq 100)
- 이동 요청은 -100 이상 100 이하의 정수이다.
- 엘리베이터의 시작 층은 항상 1층이다.
10 5
3 4 -2 8 -1
15 6
5 -2 -10 4 8 -3
6
13
5
25
엘리베이터는 1층에서 시작한다.
+3: 4층으로 이동, 이동 거리 3+4: 8층으로 이동, 이동 거리 4-2: 6층으로 이동, 이동 거리 2+8: 10층을 초과하므로 이동하지 않음-1: 5층으로 이동, 이동 거리 1
최종 층수는 5층이며 실제 이동한 총 층수는 10층이다.
엘리베이터는 1층에서 시작한다.
+5: 6층으로 이동, 이동 거리 5-2: 4층으로 이동, 이동 거리 2-10: 1층보다 낮아지므로 이동하지 않음+4: 8층으로 이동, 이동 거리 4+8: 15층을 초과하므로 이동하지 않음-3: 5층으로 이동, 이동 거리 3
최종 층수는 5층이며 실제 이동한 총 층수는 14층이다.
floor, n = map(int, input().split())
requests = list(map(int, input().split()))
current = 1
total_movement = 0
for request in requests:
next_floor = current + request
if 1 <= next_floor <= floor:
total_movement += abs(request)
current = next_floor
results = [
str(current),
str(total_movement)
]
print("\n".join(results))