문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 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 |
댓글