본문 바로가기

CodingTest/BOJ

[BOJ 2869] 백준 달팽이는 올라가고 싶다 풀이 - c++

사용언어 :  C++

 

 

 

문제풀이

* 하루에 이동한 최종 거리 (A-B)m

* x일동안 이동한 최종 거리 (A-B)*x

* x일동안 이동한 거리가 Vm보다 큰 최솟값 == 도착하는 데까지 걸리는 일수

(A-B)*x >= V

* 이 때, 정상에 올라간 후에는 미끄러지지 않는다. 즉, 마지막날엔 밤을 보내지 않는다

(A-B)*(x-1)+A>=V

 

X를 기준으로 식 정리하기

X>=((V-A)/(A-B))+1

(이때 정수인 X는 계산값과 같거나 큰 정수의 최솟값이 된다. ceil 함수 이용. V,A,B는 실수형으로 적용) 

 

 

 

전체코드

 

#include<iostream>
#include<cmath>
using namespace std;

double A, B, V;
int result;
int main() {
	cin >> A >> B >> V;
	result = ceil((V - A )/( A - B) + 1);
	cout << result;
}

 

 

 

총평

같은 난이도의 다른 문제들에 비해 비교적 쉬웠던 것 같다. 계산 과정에서 정수형 실수형만 잘 구분해주면 될 듯 


문제 출처

https://www.acmicpc.net/problem/2869

 

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

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

www.acmicpc.net