2869번: 달팽이는 올라가고 싶다
문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 ��
www.acmicpc.net
맞추고도 머리가 띵했던 문제였다. 왜냐하면 설마 이게 맞겠어? 하고 제출한 코드가 정답 처리를 받았기 때문이다.
알고리즘(?)은 다음과 같다
낮에 올라가는 높이 = A, 밤에 떨어지는 높이 = B, 총 올라가야 하는 높이 = V 라고 할 때,
정상에만 올라가면 떨어질 일이 없기 때문에 (V-A) 높이 이상으로만 올라간다면 올라가는데 걸린 DAY에 추가로 하루가 더 걸리게 된다.
따라서 최소로 올라가야할 높이 (V-A)를 먼저 구해주고, 구한 높이를 (A-B)로 나눈 몫과 나머지를 구한다.
이 때 구한 몫이 DAY가 되고, 나머지가 0이라면 최소 높이에 도달했으므로 DAY+1을 출력, 나머지가 0이 아니라면 최소 높이에 도달하지 못한 것이므로 하루가 더 걸리게 되어 DAY+2를 출력해주면 원하는 결과를 얻을 수 있다.
#include <iostream>
using namespace std;
int main(void)
{
int A, B, V;
cin >> A >> B >> V;
int end = V - A, up = A - B;
int day = end / up, check = end % up;
if (check == 0)
cout << ++day << endl;
else
{
day += 2;
cout << day << endl;
}
return 0;
}
알고리즘 200일 프로젝트 - 45 day
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2805번: 나무 자르기 (0) | 2020.05.20 |
---|---|
백준 1920번: 수 찾기 (0) | 2020.05.19 |
백준 10816번: 숫자 카드 2 (0) | 2020.05.19 |
백준 10815번: 숫자 카드 (0) | 2020.05.19 |
백준 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2020.05.18 |