백준 2869 : 달팽이는 올라가고 싶다
https://www.acmicpc.net/problem/2869
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
저 문장을 기점으로 조건을 나눌 수 있다.
1) 'A가 V보다 더 클 때'와 'A가 V보다 작을 때'로 나눈다.
2) 'A가 V보다 더 클 때'는 하루 만에 끝나니 print(1)!
3) 'A가 V보다 작을 때'는 두 조건으로 나눌 수 있다.
[전제] A-B씩 올라가다가 마지막은 A만큼 오르는 것으로 도착지점에 도달할 것이다.
=> (아이디어) 마지막 A만큼을 뺀 총 길이(V-A)에서 (A-B)를 나눈 몫에서 +1을 하면 답이 나오지 않을까?
from sys import stdin;
input = stdin.readline;
if __name__ == "__main__":
A, B, V = map(int, input().split()); # 낮 올 // 밤 내 // 총 길이
if A > V :
print(1);
else :
print((V-A) // (A-B) + 1);
조건을 더 구체적으로 생각해보지 못했다.
# from sys import stdin;
# input = stdin.readline;
A, B, V = map(int, input().split()); # 낮 올 // 밤 내 // 총 길이
if V < A :
print(1);
else:
if (V-A) % (A-B) == 0 :
print((V-A) // (A-B) +1)
else :
print((V-A) // (A-B) +2)
stdin.readline() 쓸 때 72ms가 나왔는데, input()을 쓰니까 68ms가 나왔다. 입력받는 값이 적을 때는 그냥 input()을 써도 좋을 것 같다.
브론즈1 문제였지만 나한테는 너무 어려웠다. 구상한데로 구현이 끝났는데도 답이 틀렸다고하니 머리가 점점 무거워지는 느낌이었다. 문제를 보고 초장에 정답을 할 수 있도록 문제를 이해하고 조건을 세부적으로 구상할 수 있도록 연습을 많이 해야겠다고 생각했다.