https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
이 문제는 반복문을 사용해서 풀면 시간초과가 나기 때문에
반복문을 사용하지 않고 푸는 것이 관건이다.
처음에는 반복문을 사용해서
sum에 A를 더한 후 V와 비교해서 계산해가는 방식으로 풀었다가
시간초과가 났다.
반복문을 사용하지 않고 ((V-A) % (A-B))를 사용하여 계산해 주었다.
((V-A) % (A-B)) == 0면
나누어떨어졌다는 뜻이기 때문에
정상에 도착하는 데 걸리는 날짜는 ((V-A) / (A-B)) + 1이고,
0으로 나누어떨어지지 않으면 정상에 도착하는 데 걸리는 날짜는
((V-A) / (A-B)) + 2이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int a, b, v;
int sum = 0;
cin >> a >> b >> v;
if ((v - a) % (a - b) == 0) {
cout << ((v - a) / (a - b)) + 1;
}
else {
cout << ((v - a) / (a - b)) + 2;
}
return 0;
}
'코딩테스트 > Baekjoon' 카테고리의 다른 글
[백준 #2693] N번째 큰 수 (C++) (0) | 2022.01.10 |
---|---|
[백준 #1357] 뒤집힌 덧셈 (C++) (0) | 2022.01.07 |
[백준 #11656] 접미사 배열 (C++) (1) | 2021.09.24 |
[백준 #5576] 콘테스트 (C++) (0) | 2021.09.24 |
[백준 #11399] ATM (C++) (0) | 2021.09.23 |