백준 알고리즘 단계별로 풀어보기/기본수학1

[백준 알고리즘 2869번 문제] 달팽이는 올라가고 싶다 (C언어) #브론즈Ⅰ

MNMNWVWV 2023. 1. 24. 19:41
728x90
반응형
브론즈Ⅰ

 

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

 

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

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

www.acmicpc.net

 

 

풀이 방법

 

반복문을 사용해 풀 경우 시간초과가 나기 때문에 수식을 이용해 풀었다. 마지막날에는 떨어지는 것을 고려하지 않아도 되므로, V-B미터를 올라가는 것이라고 생각하였고, A-B미터 만큼을 하루에 올라간다고 생각하여 (V-B)/(A-B)라는 수식을 작성했다. 여기에 V-B가 9미터이고 A-B가 2미터인 경우와 V-B가 똑같이 9미터이고 A-B가 3미터인 경우를 생각해볼때  (V-B)/(A-B)에 나머지가 존재하지 않으면 그대로, 존재하면 +1일을 더해주어야 한다는 사실을 알 수 있다.

 

내 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma warning(disable:4996)
#include <stdio.h>
 
int main(void) {
    
    int A, B, V, d;
 
    scanf("%d %d %d"&A, &B, &V);
 
    d = (V-B)/(A-B);
    if ((V - B) % (A - B) != 0)
        d += 1;
    printf("%d\n", d);
 
    return 0;
}
cs

 

 

느낀점

문제를 보자마자 반복문이 떠오르겠지만, 시간제한이 걸려있는 것을 수상하게만 본다면 수식을 사용해 구해야 한다는 것을 떠올릴 수 있다.

728x90
반응형