코딩테스트/Baekjoon

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

동띵 2022. 1. 4. 15:56

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