문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
문제 풀이
#include <iostream>
using namespace std;
int main()
{
int A, B, V;
cin >> A>> B >> V;
cout << (V - B - 1) / (A - B) + 1;
return 0;
}
우선 문제의 핵심은 "정상에 올라간 후에는 미끄러지지 않는다." 즉, 마지막에 전체 높이 (V)에서 떨어진 높이(B)를 빼준 값에서 하루에 올라가는 높이(A-B)로 나눠주면 며칠이 걸리는지 알 수 있다. 그리고 1을 더해서 마지막날 올라간 날짜를 더해준다. 이때 V-B 가 아닌 V-B-1을 해준 이유는 전체 높이와 하루에 올라가는 높이가 같으면(V = A) 한번에 도착하는 경우도 있기 때문이다.
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
'프로그래밍 > 백준 킬러 문항 풀이' 카테고리의 다른 글
(백준) 17478 재귀함수가 뭔가요? C++ (0) | 2022.07.02 |
---|---|
(백준) 1929번 소수 구하기 C++ (0) | 2022.06.30 |
(백준) 1712 손익분기점 C++ (0) | 2022.06.30 |
(백준) 1152 단어의 개수 C++ (0) | 2022.06.30 |
(백준) 1157 단어 공부 C++ 문제 풀이 (0) | 2022.06.29 |