[백준] 2869

당당·2023년 4월 19일
0

백준

목록 보기
7/179

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

📔문제

땅 위에 달팽이가 있다.
이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.


📝입력

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다.
(1 ≤ B < A ≤ V ≤ 1,000,000,000)


📺출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.


📝예제 입력 1

2 1 5

📺예제 출력 1

4

📝예제 입력 2

5 1 6

📺예제 출력 2

2

📝예제 입력 3

100 99 1000000000

📺예제 출력 3

999999901

🔍출처

Contest > Croatian Open Competition in Informatics > COCI 2010/2011 > Contest #2 1번

-문제를 번역한 사람: baekjoon
-데이터를 추가한 사람: CHULMING, jm0707, tong39
-문제의 오타를 찾은 사람: hellogaon
-빠진 조건을 찾은 사람: jh05013


🧮알고리즘 분류

  • 수학

📃소스 코드


import java.util.Scanner;

public class Code2869 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		
		double noon=scanner.nextInt();
		double night=scanner.nextInt();
		double height=scanner.nextInt();
		
//		int now=0;
		int day=1;
		double calc=(height-noon)/(noon-night);
//		
//		while(now<height) {
//			now=now+noon;
//			if(now>=height) {
//				break;
//			}
//			now=now-night;
//			day++;
//		}
//		
//		System.out.println(day);
		if(calc%1==0.0) {
			day=day+(int)calc;
		}
		else {
			day=day+(int)calc+1;
			
		}
		System.out.println(day);
		
	}

}

📰출력 결과


📂고찰

원래는 while문으로 반복했는데, 시간초과가 떴다.
그래서, 나눗셈을 이용하여 해결을 해보았다.

day=1;
day=day+(V-A)/(A-B)
만약 (V-A)/(A-B)가 분수이면, +1 을 더하고
그렇지 않으면 더하지 않는 것이다.
profile
MySQL DBA 신입 지원

0개의 댓글