Baekjoon/단계별로 풀어보기

[BOJ/백준] 2869번 달팽이는 올라가고 싶다 C++ 문제 풀이

728x90

단계별로 풀어보기 - 수학 1 단계 - [5단계] 2869번

문제

문제 링크 : www.acmicpc.net/problem/2869

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

입력 복사 : 

2 1 5

 

풀이

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int V, A, B;
	int day = 0, snail = 0;
	cin >> A >> B >> V;

	while (1) {
		day++;
		snail += A;
		if (snail >= V)
			break;
		snail -= B;
	}
	cout << day << endl;
}

처음엔 이와 같이 반복문을 통해 달팽이가 오르내리는 하루하루를 실제로 반복했습니다.

하지만 이런식으로 구현하면 시간 초과가 떠요...

 

정답을 (v-b-1)/(a-b)+1 의 식으로 구하는 방법으로 코드를 짰습니다.

 

CODE

#include <iostream>
using namespace std;

int main() {
	int a, b, v;
	cin >> a >> b >> v;
	int count;

	count = (v - b - 1) / (a - b) + 1;
	cout << count << endl;
}

 

결과

728x90