(백준BAEKJOOB )- 달팽이는 올라가고 싶다 "c"

2023. 3. 13. 19:14언어/c, c++

728x90

이 문제는 0.25초 키 때문에 while문이나 for문을 이용할 수 없는 문제였다

 

오직 수학적으로 해결 해야되는 문제였다 개인적으로는 

 

매우 매우 어려웠다.

 

코드 1번
#include <stdio.h>

int main() {
	int a, b, v; // 2 1 5
	// 두가지 경우가 나온다 0일떄와 0이상일떄
	int sum,su; 
	scanf("%d %d %d", &a, &b, &v);
	
	su = (v - b) % (a - b); 
	// 나무 - 달팽이 올라간 높이 % 달팽이가 올라간 높이


	if (su==0) {sum = (v - a) / (a - b);} //달팽이가 다올라갔으면 출력
	else {sum = (v - a) / (a - b) + 1; } //달팽이가 다 올라가지 못했으면 출력
	printf("%d", sum + 1); //인덱스는 0부터 니까 1추가
}

달팽이가 나무 길이를 낮에는 a미터 올라가고 밤에는 b미터 미끄러지니까 (V-A)/(A-B)라는 식이 나오고

달팽이가 다 올라가지 못했으면 +1을 출력해 준다 다음 날이 되기 때문에 

 

 

다른 코드를 보면 

count = (v - b - 1) / (a - b) + 1;

이렇게 구현하신 분들도 간혹 계셨다.

이 코드가 가독성이 매우 좋은 거 같다.

 

코드 2번
#include <iostream>
using namespace std;

int main() {
	int a, b, v;
	cin >> a >> b >> v;
	int count;

	count = (v - b - 1) / (a - b) + 1;
	cout << count << endl;
}

 

 

 

 

 

다시 풀어보면 좋을 거 같은 문제이다.

728x90