본문으로 바로가기

백준 2869번 java 달팽이

category Algorithm by java 2019. 9. 1. 02:20

문제

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

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

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

입력

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

출력

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

 

 

 

*오답률이 높은 이유는 시간제한때문이다. 앞서 풀었던 손익분기점 문제와 비슷한 문제이다.

1.  V(목표)는 고정된 값이고, 결국 달팽이는  하루에 A(UP)-B(DOWN)만큼 올라간다.

2. 달팽이는 목표위치에 도착한 날에는 B만큼 떨어지지 않는다.

3. 목표지점인 V에서 마지막날(도착해서 B만큼 떨어지지 않는 날)을 빼주면 V-A 가 된다.

4.  달팽이가 오르는데 걸리는 날을 구하는 식 ((V-A)/(A-B)) 에서 만약 딱 나누어 떨어진다면 달팽이는 올라갔다가 내려와야 목표지점에 도달하기 때문에  +1을, 나누어 떨어지지 않는다면 마지막날 올라가는 작업까지 해줘야 목표지점에 도달하기 때문에 +2를 해준다.

 

 

 

import java.util.Scanner;

public class Exam2869 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long A = sc.nextInt();
		long B = sc.nextInt();
		long V = sc.nextInt();

		long result = (V - A) / (A - B);

		if ((V - A) % (A - B) == 0) {
			System.out.println(result + 1);
		} else {
			System.out.println(result + 2);
		}

	}
}

'Algorithm by java' 카테고리의 다른 글

백준 9093 단어뒤집기 java  (0) 2019.09.04
백준 1057번 토너먼트 java  (0) 2019.09.02
백준 1094번 막대기 java  (0) 2019.09.01
백준 1712번 손익분기점 java  (0) 2019.08.29
백준 2455번 지능형 기차 java  (0) 2019.08.27