SMALL

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

 

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

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

www.acmicpc.net


  • 문제


  • 문제풀이

처음에는 while로 접근하려고 했으나 시간초과를 보고 당황했지만 식을 만들어 풀면 해결이 된다.

#include<stdio.h>

int main() {
    int A;
    int B;
    int V;
    int count=0;
    scanf("%d %d %d",&A,&B,&V);
    while(V>0){
        V-=A;
        if(V==0){
            count++;
            break;
        }
        V+=B;
        count++;
    }
    printf("%d",count);
}

위의 코드는 시간 초과가 걸리니 (V-B-1)/(A-B)+1이라는 식을 만들어 풀게된다. 


  • 코드 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h> 
#include <iostream>

int main() {
    int A;
    int B;
    int V;
    int count = 0;
    scanf("%d %d %d", &A, &B, &V);
    int real = (V - B - 1) / (A - B) + 1;
    printf("%d", real);
}

  • 후기

처음에 굉장히 쉽다고 생각했지만 실패하고 수학적으로 풀어야함을 알게 되었다.

LIST

+ Recent posts