문제
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽
www.acmicpc.net
소스코드
#include <iostream>
using namespace std;
int main(void) {
int A, B, V;
cin >> A >> B >> V;
cout << (V - B -1 ) / (A - B) + 1 << endl;
}
코드설명
하루에 달팽이가 올라갈 수 있는 거리는 A-B 만큼이다. 마지막 날에는 달팽이가 떨어지기 전에 목표지점에 도달할테니 달팽이가 V-B 까지 간 거리를 구해주면 된다. 그 다음 V-B 만큼의 거리에 A-B가 몇 번이나 반복되는지 알면 된다. +1은 마지막 하루를 더 해 준 것이다. 그러나 +1을 해주기 전에 이미 목표지점에 도달한 경우가 있다. (V-B)/(A-B)가 딱 나누어 떨어지는 경우가 그렇다. 문제의 예도 그렇고 또 다른 예를 들자면 V = 5, A = 5, B = 2 인 경우도 마찬가지다. 답은 하루만에 도착하는 것인데, 3/3 + 1 = 2일이 된다. 이런 경우까지 고려해서 V-B를 할 때 1을 추가로 빼주는 것이다.
'개인 공부 > 코딩테스트' 카테고리의 다른 글
[C++] 백준 2675번 문자열 반복 :: seoftware (0) | 2020.03.06 |
---|---|
[C++] 백준 5543번 상근날드 :: seoftware (0) | 2020.03.06 |
[C++][구현] 백준 5585번 거스름돈 :: seoftware (0) | 2020.03.04 |
[C++] 백준 1712번 손익분기점 :: seoftware (0) | 2020.03.03 |
[C++][에라토스테네스의 체] 백준 1929번 소수 구하기 :: seoftware (0) | 2020.03.03 |
댓글