728x90
문제
사용언어: 파이썬
문제 유형: 일반 수학1
난이도: 브론즈1 (23.10.28 기준)
문제 보러가기
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
입출력
입력 | 낮에 올라가는 거리, 밤에 내려가는 거리, 나무 막대의 높이 |
출력 | 나무 막대에 올라가는데 걸리는 필요한 일 수 |
풀이
본 문제는 반복문을 사용하면 쉽게 풀 수 있다.
하지만 주어진 시간의 경우 반복문을 사용하면 지킬 수 없다.
따라서 수학적인 방법을 사용해야한다.
a, b, v = map(int, input().split())
move = a-b
goal = v-b
day = goal // move
if goal % move == 0:
print(day)
else:
print(day + 1)
1) 하루마다 움직이는 양은 a - b이다. 👉move
a - b = 낮에 올라가는 높이 - 밤에 떨어지는 높이 ▷ 실질적으로 하루 동안 올라간 높이
2) 나무 막대기에 도달하는 지점은 v - b다. 👉goal
v - b = 나무막대기 높이 - 밤에 떨어지는 높이 ▷ 낮에 목표지점에 도달하여 더 이상 떨어지지 않고, 다음날로 넘어가지 않는 높이
3) 만약 goal을 move로 나눴을때 나머지가 0이라는 뜻은 낮에 목표지점에 도달해 밤을 거치지 않아 떨어지지 않는다는 뜻이다.
즉, 걸리는 일 수는 goal // move해서 나온 값(몫)이다.
3.1) 만약 나머지가 0이 아니면 밤을 거쳐 한 번 b만큼 떨어진 뒤 다음날 낮에 a만큼 하루 더 올라가야 한다는 것이다.
즉, 걸리는 일 수는 goal // move해서 나온 값(몫)에 +1(다음날)한 값이다.
💭 처음에 시간 상관없이 반복문을 사용해 문제를 풀어서 쉽다고 생각했다가 실패했 던 문제다.
문제를 풀면서 시간같이 중요한 부분도 챙기는 연습을 해야겠다.
728x90
'CODING TEST > Beakjoon' 카테고리의 다른 글
[백준 / 파이썬 /17039] Sleepy Cow Herding (Bronze) (0) | 2025.01.11 |
---|---|
[백준 / 파이썬 /2903] 중앙 이동 알고리즘 (1) | 2023.10.30 |
[백준 / 파이썬 / 11005] 진법 변환2 (0) | 2023.10.27 |
[백준 / 파이썬 / 2720] 세탁소 사장 동혁 (파이썬 잔돈, 거스름돈 계산) (0) | 2023.10.27 |
[백준 / 파이썬 / 2745] 진법 변환 (0) | 2023.10.27 |