※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 15830번 문제인 싱크홀이다.
문제는 아래 링크를 확인하자.

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

 

15830번: 싱크홀

돌의 초기 수평 속력 V, 구멍의 너비 W, 구멍의 실제 깊이 D가 주어진다. V, W, D 의 단위는 각각 m/s, m, m 이다.

www.acmicpc.net

처음에 벽에 부딛힐 때까지 걸리는 시간은 W/V와 같이 계산할 수 있고, 이를 주어진 낙하거리 계산 식에 집어넣어 처음에 벽에 부딛힐 때까지 낙하한 거리를 계산할 수 있다.

 

한번 벽에 부딛힐 때마다 다음 벽에 부딛힐 때까지 걸리는 시간이 1.25배가 됨을 이용해 반복문으로 시뮬레이션을 직접 돌려 문제를 해결하자.

 

바닥과 벽에 동시에 부딛히는 입력은 주어지지 않는다는 줄글을, 즉 실수 자료형을 이용해 구현해도 경계값에서의 오차값에 대한 걱정을 덜 수 있음을 확인하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long double ld;

ld V, W, D, DD;
ld T;
int ans = -1;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> V >> W >> D;
	T = W / V;
	while (DD < D) {
		ans++;
		DD += 5 * T * T;
		T *= 1.25;
	}

	cout << ans;
}
728x90

+ Recent posts