백준 2869 달팽이는 올라가고 싶다 C++
2023. 9. 18. 17:45ㆍ알고리즘문제 풀이/백준
문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
풀이
처음: 0m
1일 낮: Am
1일 밤: (A-B)m
2일 낮: (A-B+A)m
2일 밤: (A-B+A-B)m
...
day일 낮:(A-B+A-B+...+A)m >= Vm
당일 낮에 정상을 닿은 경우(= if (V-A) % (A-B) == 0)
A = 7 B = 3 V = 19
7m
4m
8m
12m
4일낮: 19m
(19-7) / (7-3)= 12 / 4 = 3.. 0
(V-A) % (A-B) == 0 일 때는 day = (V-A) /(A-B) + 1
당일 낮에 정상을 넘긴 경우(= if (V-A) %(A-B) != 0)
A = 9 B = 5 V = 30
9m
4m
8m
12m
...
20m
29m
6일 24m
7일 33m
(30-9) / (9-5)=21/4 = 5 ...1
(V-A) % (A-B) != 0일 때에는 day = (V-A) / (A-B) + 2
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int a, b, v;
cin >> a >> b >> v;
int day = 0;
if ((v - a) % (a - b) == 0) {
day = (v - a) / (a - b) + 1;
}
else {
day = (v - a) / (a - b) + 2;
}
cout << day;
return 0;
}'알고리즘문제 풀이 > 백준' 카테고리의 다른 글
| 백준 2920 음계 C++ (0) | 2023.09.18 |
|---|---|
| 백준 2884 알람 시계 Python (0) | 2023.09.18 |
| 백준 2858 기숙사 바닥 C++ (0) | 2023.09.18 |
| 백준 2839 설탕 배달 C++ (0) | 2023.09.18 |
| 백준 2822 점수 계산 Python (0) | 2023.09.18 |