본문 바로가기
코딩테스트/백준

[JAVA] 2869번 달팽이는 올라가고 싶다

by PEKAH 2021. 7. 23.

문제

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

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

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

입력

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

출력

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

예제 입력

2 1 5
5 1 6
100 99 1000000000

예제 출력

4
2
999999901

풀이

스캐너로 문제를 풀었었는데 계속 시간 초과 에러가 났다-_-

아무리봐도 내 생각에 더 이상 최적화할 방법이 보이지 않아 검색을 해보니,

Scanner 외에 BufferedReader라는 클래스가 있음을 알게되었다.

확인해보니 속도차가 꽤 나더라..

자바 알고리즘 문제 풀이시에는 BufferedReader를 적극 활용해야겠다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class 달팽이는올라가고싶다 {
    public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	String [] input = br.readLine().split(" ");
    	
    	int a = Integer.parseInt(input[0]);
    	int b = Integer.parseInt(input[1]);
    	double v = Double.parseDouble(input[2]) - b;
        
        System.out.println((int)Math.ceil( v / ( a - b )));
    }
}

'코딩테스트 > 백준' 카테고리의 다른 글

[JAVA] 2635번 수 이어가기  (0) 2021.08.24
[JAVA] 1436번 영화감독 숌  (0) 2021.07.25
[JAVA] 2839번 설탕 배달  (0) 2021.07.22
[JAVA] 2231번 분해합  (0) 2021.07.21
[Python] 7490번 0 만들기  (0) 2021.07.10

댓글