반응형
문제
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
풀이
처음에는 반복문을 사용하여 풀면 되겠다고 생각했고 너무 쉽다고 생각했는데, 결과는
시간 초과로 실패...
그 이유를 보니 0.25초안에 1,000,000,000 라는 큰 숫자를 다 처리하기에는 너무나도 모자란 시간이기에 이건
수학적으로 접근해야겠다고 생각했다.
아침에는 A 만큼 가고 밤에는 B 만큼 떨어진다. 그렇다면 하루에 올라가는 거리는 A-B,
그리고 마지막 날에는 안떨어지기떄문에 총 올라가야하는 거리는 V-B 이다.
그렇다면 ( V - B ) / ( V - A )로 나누어서 깔끔하게 안나누어질수도 있기때문에 +1를 한다.
그런데 +1를 하더라도 안 나뉘어지는 경우도 있으니 ( V - B - 1 ) / ( V - A ) + 1 를 하면 정확한 값이 나온다.
소스코드
#include <stdio.h>
int main(void)
{
int A, B, V, count = 0;
scanf("%d %d %d", &A, &B, &V);
count = ( V - B - 1) / (A - B) + 1;
printf("%d", count);
return 0;
}
반응형
'프로그래밍 > 백준(BOJ)' 카테고리의 다른 글
[백준(BOJ) / C][Silver Ⅳ] 10845번 : 큐 (0) | 2024.01.13 |
---|---|
[백준(BOJ) / C][Silver Ⅴ] 1343번 : 폴리오미노 (0) | 2024.01.06 |
[백준(BOJ) / C][Silver Ⅳ] 10773번 : 제로 (0) | 2024.01.04 |
[백준(BOJ) / C][Silver Ⅳ] 9012번 : 괄호 (1) | 2024.01.03 |
[백준(BOJ) / C][Silver Ⅴ] 25644번 : 최대 상승 (0) | 2024.01.03 |