본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 2869 달팽이는 올라가고 싶다 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 15.
728x90
반응형

BaekJoon 백준 2869 달팽이는 올라가고 싶다 문제는 달팽이는 높이가 V미터인 나무 막대를 올라갈 것인데, 낮에 A미터 올라가고, 밤에 잠을 자는 동안 B미터 미끄러질 때 나무 막대를 모두 올라가는데 며칠이 걸리는지 구하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 2869 달팽이는 올라가고 싶다 문제 정보

출처

- https://www.acmicpc.net/problem/2869

난이도

- 브론즈 1 / Bronze 1

 

달팽이는 올라가고 싶다 문제 요약

  • 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
  • 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
  • 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하여 출력한다.

 

문제 풀이 과정

  1. 정상에 도착한 날에는 밤에 미끄러지지 않으므로 목표 높이를 V-B로 정한다.
  2. 목표 높이 / 하루에 올라가는 높이를 계산한다.
  3. 딱 나누어 떨어지면 결과 값이 걸린 일 수이다.
  4. 나누어 떨어지지 않으면 하루를 더 올라가야 하기 때문에 결과 값 + 1 이 걸린 일 수이다.
  5. 3, 4번의 과정은 math.ceil 클래스를 사용하여 구한다.
  6. 테스트 케이스 번호, 올라가는데 걸린 일 수를 출력한다.

 

코드 및 설명
import math

A, B, V = map(int, input().split())
print(math.ceil((V - B) / (A - B)))

제한 시간 안에 실행되어야 하는 시간에 중점을 둔 문제이다. 반복문을 사용하면 시간 초과로 틀리고, 재귀 함수를 사용하면 런타임 에러 (RecursionError)가 발생한다. 재귀 함수가 너무 많이 반복되어 오버플로우가 발생한 듯하다. 반복, 재귀보다 수학적인 풀이가 요구되는 문제이다.

 

BaekJoon 백준 2869 달팽이는 올라가고 싶다 문제를 파이썬 python으로 풀었고, 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글