백준_2869번

정소담·2023년 1월 22일
0

BOJ Short Review

목록 보기
12/44
post-thumbnail

2869번 달팽이는 올라가고 싶다.

문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

나무를 열심히 올라가는 달팽이의 정상에 도달할 때까지 며칠이 걸리는지 구하는 귀여운 문제

입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

하지만 막상 코드를 써보니 귀엽지 않았다.......

import sys
input = sys.stdin.readline # 시간을 줄여보겠다고 sys 동원

a,b,v = map(int,input().split())

if (v-a)%(a-b) > 0: 
# 자는동안 미끄러지는 달팽이가 낮에 차마 다 올라가지 못하고
# 다음날 낮에 정상에 도달할 경우를 생각해 하루를 더해줬다
    print(((v-a)//(a-b))+2)
else:
    print(((v-a)//(a-b))+1)
 

while 문으로 시도해보려다가 예제에 있는 숫자를 보고
while은 포기했는데 그 이후로 시도할 때 마다 반례가 생겼다.

계속 같은 풀이에서 벗어나지 못하고 코드가 길어지고...복잡해지고..
그러다가 이렇게는 안되겠다 싶어서 다 지우고 다시 가볍게 생각해봤다.
처음부터 차근차근 접근방법을 생각해봤더니 해결 되었다.

다른 분들이 작성하신 한 줄, 두 줄 코드처럼 아직 간단히
작성하진 못하지만 조금씩 풀어나가는게 뿌듯하다.

계속 하다보면 더 향상될것이라 믿는다!!
중요한건 꺾이지 않는 마음 !!!!

profile
Hi ! I'm newbie :)

0개의 댓글