[C++]백준2869 달팽이는 올라가고 싶다

[C++]백준2869 달팽이는 올라가고 싶다

백준2869 달팽이는 올라가고 싶다 링크

문제

문제

예제 입력

예제


코드

#include<iostream>
using namespace std;

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

    int a, b, v;
    cin >> a >> b >> v;

    int day = 0;
    v = v - a;

    day = v / (a - b);
    if (v % (a - b))
        day++;
    day++;
    cout << day;
}

설명

기본적으로 C/C++의 기본 입출력함수를 혼합하여 사용되게 만들었지만 그만큼 실행속도에서 차이가 생기기 때문에 설정을 해주며 입력을 받고 일수를 구하기 위해선 목표 높이에서 우선 낮(a)만큼을 빼고 시작합니다. 왜냐하면 그 뒤에 사용할 식이 조건(또, 정상에 올라간 후에는 미끄러지지 않는다.)을 만족시키기 위해서입니다. 전처리작업이 없다면 정상까지 올라가도 그날에 밤(b)까지 계산되어 정상까지 못갔다고 판단하기 때문입니다. 그런데도 남은 거리가 있다면 일수를 추가합니다.
처음에는 반복문을 통해 구현하고자 생각했습니다. 하지만 조건을 늦게 보고 변경하였습니다.

    int dist = 0;
    while (true) {
        day++;
        
        dist += a;
        if (dist >= v)
            break;
        dist -= b;
    }

결과

결과


© 2022. All rights reserved. 신동민의 블로그