728x90
[백준알고리즘] 2869번: 달팽이는 올라가고 싶다 -Python, C++
https://www.acmicpc.net/problem/2869
달팽이가 하루에 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 |