사용언어 : 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
'CodingTest > BOJ' 카테고리의 다른 글
[BOJ 1874] 백준 스택 수열 풀이 - C++ (0) | 2021.09.26 |
---|---|
[BOJ 1541] 백준 잃어버린 괄호 풀이 - C++ (0) | 2021.09.23 |
[BOJ 1193] 백준 분수찾기 풀이 - C++ (0) | 2021.09.21 |
[BOJ 10816] 백준 숫자 카드 2 풀이 - C++ (0) | 2021.09.18 |
[BOJ 1654] 백준 랜선 자르기 풀이 - C++ (0) | 2021.09.18 |