백준 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