| 문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이느 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
| 입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B ≤ A ≤ V ≤ 1,000,000,000)
| 출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
| 예제 입력 1
2 1 5
| 예제 출력 1
4
| 문제의 키 포인트
1. 올라가는 높이: A, 미끄러지는 높이: B, 총 나무 막대의 높이: V
2. 정상에 올라간 후에는 미끄러지지 않는다.
| 해결방안(Solution)
1. 정상에 올라간 후 미끄러지지 않는다는 조건이 있으므로,
식 1: (V-A) % (A-B) = 0 인 경우, 딱 정상에 올라간다는 것을 판별할 수 있다.
이 때 식 2: (V-A) / (A-B) +1 해당 소요일 수가 된다.
정상에 딱맞게 올라가지 못하고, 다음날로 넘어가는 경우는
식 3: (V-A) / (A-B) +1 +1이 해당 소요일 수가 된다.
// BOJ_2869_snail, 달팽이는 올라가고 싶다
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main(void)
{
int A, B, V;
int day;
scanf("%d %d %d", &A, &B, &V);
if ((V - A) % (A - B) == 0) // 정상에 딱 맞게 도달한 경우
{
day = (V - A) / (A - B);
}
else // 정상에 딱 맞게 도달하지 못한 경우
{
day = (V - A) / (A - B) + 1;
}
printf("%d", day+1);
}
| 문제출처
https://www.acmicpc.net/problem/2869
반응형
'코딩 | 알고리즘 & 문제풀이 > 백준_Backjoon' 카테고리의 다른 글
[C언어] Backjoon_Code 1978, 소수찾기 (0) | 2021.07.23 |
---|---|
[C언어] Backjoon_Code 1011, Fly me to the Alpha Centauri (0) | 2021.07.22 |
[C언어] Backjoon_Code 1193, 분수찾기 (0) | 2021.07.16 |
[C언어] Backjoon_Code 2292, 벌집 (0) | 2021.07.15 |
[C언어] Backjoon_Code 1712, 손익분기점 (0) | 2021.07.14 |