백준 11034번: 캥거루 세마리2

최창효·2022년 2월 1일
0
post-thumbnail

접근법

  • 가장 많이 점프하려면
    • 두 캥거루 사이 공간이 넓은 곳을 활용해야 합니다.
      • 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
profile
기록하고 정리하는 걸 좋아하는 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보