목차

    Algorithm(알고리즘)/백준

    14_백준 _2869번 파이썬 달팽이는 올라가고 싶다

    고로케 2021. 6. 17.

    목차

      반응형

       

      처음에 Brute force 로 그냥 반복으로 했다가
      입력값에 나무길이가 1억 있는걸 보고,, 바로 다시 짰다.
      수학적으로 해결했다 하루 올라가는 길이 = 아침올라감 - 밤 내려감(: oneday_distance = A - B) 으로
      도착 전날까지 걸린 날짜 = (전체 길이 - 낮에 올라가는 길이)//하루 올라가는 길이 : (V - A) // oneday_distance
      남은 거리 left_distance = V - count * oneday_distance
      이제 남은 거리만 while 문으로 if 남은 거리 - 올라감 < 0: 도착 반복문을 짜주면 끝!

      14_백준 _2869번 파이썬 달팽이는 올라가고 싶다

       

      -풀이

      A, B, V = list(map(int, input().split()))
      
      # 하루 올라가는 양
      oneday_distance = A - B
      count = 0  # 날짜 카운트
      
      # 도착 전날까지 걸린 날짜
      count = (V - A) // oneday_distance
      # print(count,'전날 까지의 날짜')
      
      # 남은 거리
      left_distance = V - count * oneday_distance
      # print(left_distance,'left_distance')
      
      while True:
          left_distance -= A  # 올라간 길이
          count += 1
          if left_distance < 1:
              break
          left_distance += B  # 미끄러진 길이
      
      print(count)
      
      '''
      # 입력
      2 1 5
      5 1 6
      100 99 1000000000
      
      # 출력
      4
      2
      999999901
      '''

       

      -brute force 로 짠 코드 (참고용)

      # V 값이 1000000000 인 경우 시간초과
      A, B, V = list(map(int, input().split()))
      
      tree = list(range(V))
      # 하루 올라가는 길이
      distance = 0
      count = 0  # 날짜 카운트
      while True:
         distance += A  # 올라간 길이
         count += 1
         if distance >= V:
             break
         distance -= B  # 미끄러진 길이
      
      print(count)

       

       

       

      14_백준 _2869번 파이썬 달팽이는 올라가고 싶다

      반응형

      댓글