
접근법
- 가장 많이 점프하려면
- 두 캥거루 사이 공간이 넓은 곳을 활용해야 합니다.
- A-B-----C라면
A와B사이
보다 B와C사이
를 활용하는 게 더 좋습니다.
- 밀착해야 합니다.
- A-B-----C에서 A가 점프할 때
B--A--C
보다 B----AC
가 더 좋습니다.
- 위의 두 조건을 지켜서 점프하면 사이 공간이 넓은 곳의 모든 칸을 다 밟을 수 있습니다.
- 입력이 몇 개 주어진다는 특별한 명시가 없습니다.
input()
은 입력받을 값이 없으면 EOFError(End-Of-File-Error)를 발생시킵니다.
- while문으로 입력을 받다가 try-except를 통해 break해야 합니다.
정답
while True:
try:
lst = list(map(int,input().split(" ")))
print(max(lst[1]-lst[0],lst[2]-lst[1])-1)
except EOFError:
break
기타
- 처음에 문제 그대로 하나씩 점프하는 걸 구현했는데 시간초과가 발생했습니다.
import sys
while True:
try:
lst = list(map(int,sys.stdin.readline().split(" ")))
if lst[2]-lst[1]<lst[1]-lst[0]:
cnt=1
else:
cnt=0
answer = 0
while True:
if cnt%2 == 0:
lst[0] = lst[2]-1
lst.sort()
cnt+=1
answer+=1
else:
lst[2] = lst[0]+1
lst.sort()
cnt+=1
answer+=1
if lst[0]+1 == lst[1] == lst[2]-1:
break
print(cnt)
except:
break