728x90
[백준알고리즘] 2869번: 달팽이는 올라가고 싶다 -Python, C++
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽
www.acmicpc.net
달팽이가 하루에 a만큼 올라갈 수 있다. 그러나 밤 사이에 b만큼 내려오기 때문에 낮동안 v까지 올라가지 못한다면 b만큼 내려와야 하는 것이다.
그래서 마지막 날에는 낮동안 a만큼 올라간다고 생각을 했고, 기본적으로 하루는 지나고 시작을 했다.
하루 전체에서 올라갈 수 있는 높이 a-b로 v-a를 나눴을 때 나누어 떨어진다면, 나눈 몫만큼의 일 수에 마지막 날 a만큼의 높이를 올라가면 v까지 올라갈 수 있다는 것을 의미한다.
하지만 a-b로 v-a를 나눴을 때 나눠 떨어지지 않는다면, 그거보다 하루는 더 지나야 v보다 높은 지점을 도달할 수 있는 것이다.
따라서 기본적으로 v//(a-b) + 1에 나눠 떨어지지 않는다면 1을 더 더해주도록 했다.
a, b, v = map(int, input().split())
v -= a
print(v//(a-b) + 1 if v%(a-b) == 0 else v//(a-b) + 2)
아래는 C++ 코드이다. 로직 자체는 같다.
#include <iostream>
int main(void)
{
int a, b, v;
std::cin >> a >> b >> v;
int days = 1;
v = (v < a ? 0 : v - a);
days += int(v / (a - b)) + (v % (a - b) ? 1 : 0);
std::cout << days;
}
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 10250번: ACM 호텔 -Python (0) | 2020.04.01 |
---|---|
[백준알고리즘] 2839번: 설탕 배달 -Python, C++ (0) | 2020.03.31 |
[백준알고리즘] 1712번: 손익분기점 -Python, C++ (0) | 2020.03.19 |
[백준알고리즘] 2143번: 두 배열의 합 -Python (0) | 2020.03.13 |
[백준알고리즘] 2632번: 피자판매 -Python (0) | 2020.03.13 |