문제
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
출력
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.
풀이 과정
1. 처음은 while과 for등의 반복문을 통해 풀었다. 정답은 나왔지만 시간초과로 인해 틀렸다.
2. 식을 정립해서 while문 안에 넣어 풀었다. 이번에도 시간초과가 떴다.
3. 반복문을 일절 쓰지않고 식만 사용해서 풀었다.
또 시간초과가 떴는데, 찾아보니 Java11은 기본적으로 실행 시간이 길어 시간초과가 난다고한다.
4. 언어를 Java8로 변경하고, 코드는 그대로 하여 제출했더니 성공했다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int A = scanner.nextInt();
int B = scanner.nextInt();
int V = scanner.nextInt();
int ans = (int)((V-B)/(A-B));
if((V-B)%(A-B)!=0) {
ans++;
}
System.out.println(ans);
}
}
'코테 준비' 카테고리의 다른 글
백준 2775번 - 부녀회장이 될테야 (0) | 2021.01.27 |
---|---|
백준 10250번 - ACM호텔(Java) (0) | 2021.01.26 |
백준 1193번 - 분수 찾기(Java) (0) | 2021.01.24 |
백준 2292번 - 벌집(Java) (0) | 2021.01.23 |
백준 1712번 - 손익분기점 (0) | 2021.01.22 |