https://www.acmicpc.net/problem/2869
코드는 간단하지만 생각하는데 오래걸렸다. 달팽이는 하루동안 A를 가고 B를 내려온다. V를 올라가야 하는데 총 며칠이 걸리는지 물어보는 문제다. 나는 V에서 A를 뺀 다음 남은 거리를 A - B로 얼마나 걸리는지 계산을 하였다. 남은거리를 A - B로 이동한 만큼 마지막 A이동에서 A - B로 초과하여 이동한 거리를 안가는 형식으로 풀었다.
ex1.)
100 90 101
101 - 100 = 1
1은 100 - 90 한번이면 간다.
10 100
ex2.)
2 1 5
(5 - 2) / (2 - 1) = 3
5 - 2 = 3
3은 2 - 1 세번이면 간다.
1 2 3 5
ex3.)
7 3 10
10 - 7 = 3
3은 7 - 3 한번이면 간다.
4 10
ex4.)
10 2 30
30 - 10 = 20
20은 10 - 2 세 번이면 간다
8 16 24 30
ex5.)
4 2 10
10 - 4 = 6
6은 4 - 2 세번이면 간다 6 / 2 = 3
2 4 6 10
ex6.)
7 2 30
30 - 7 = 23
23은 7 - 2 다섯번이면 간다 23 / 5 = 4
5 10 15 20 25 30
#include <iostream>
using namespace std;
int main() {
int A, B, V; //A는 올라가는 높이, B는 내려오는 높이, V는 도달해야 되는 높이
int x; //몇일 걸리는지 나타내는 변수
cin >> A >> B >> V;
if ((V - A) % (A - B) == 0) { //V에서 마지막 A가는 거리를 뺀 것이 하룻동안 이동한 거리로 딱 맞게 떨어진다면
x = (V - A) / (A - B); //V - A를 A - B로 나누어 이동한 총 일수를 계산
}
else { //V에서 마지막 A가는 거리를 뺀 것이 하룻동안 이동한 거리로 딱 맞게 떨어진다면
x = (V - A) / (A - B) + 1; //하루를 더 추가, 나머지가 남으니까 하루를 더 가야 한다.
}
x++; //마지막 A이동 횟수를 증가
cout << x;
}
'백준' 카테고리의 다른 글
백준6118 - 숨바꼭질 (0) | 2019.07.18 |
---|---|
백준5639 - 이진 검색 트리 (0) | 2019.07.18 |
백준1371 - 가장 많은 글자 (0) | 2019.07.15 |
백준1431 - 시리얼 번호 (0) | 2019.07.15 |
백준1296 - 데이트 (0) | 2019.07.13 |