문제
알고리즘 고민
이 문제는 아래의 문제와 비슷한 느낌이었다.
2022.03.10 - [Algorithm/BOJ] - [BOJ] 1712번 : 손익분기점 (JAVA/자바)
차이점으로는 B < A 라는 조건이 주어졌기 때문에 도달하지 못하는 경우는 없었다. 또, 손익분기점은 이득이 발생해야하기 때문에 1부터 본문의 문제는 정확히 도착만하면 되기때문에 0 이어도 상관이 없다. 또, 구매와 판매처럼 동시에 이루어지는것이 아닌 올라갔다가 그날 밤에 떨어지기 때문에 경계값인 마지막날을 위한 추가적인 처리가 필요했다.
달팽이는 하루에 A-B 만큼의 높이만큼 올라가는데 마지막 날에는 A 미터의 높이를 올라가면서 끝나게 된다.
따라서, 높이인 V 에서 A 를 빼면 A-B만큼씩 올라갈때 도달하면 다음날 도착을 보장할 수 있는 높이를 찾을 수 있다.
V-A 를 구하고 A-B 로 나누어 주면 몇일이 걸리는지 확인할 수 있는데 이때 정확히 값이 안나누어 떨어질때는 남은 높이가 있다는 뜻이기에 하루를 더 더해줘야한다.
위의 방식을 이용해 걸리는 시간을 구하고 마지막으로 A 미터만큼 올라갈때 걸리는 1일을 더해주게 되면 끝이난다.
JAVA Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Ex04_r {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int V = Integer.parseInt(st.nextToken());
int move = A - B, height = (V - A);
int day = height % move == 0 ? height / move : height / move + 1;
System.out.println(day + 1);
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2775번 : 부녀회장이 될테야 (JAVA/자바) (0) | 2022.03.11 |
---|---|
[BOJ] 10250번 : ACM 호텔 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 1193번 : 분수찾기 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 2292번 : 벌집 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 1712번 : 손익분기점 (JAVA/자바) (0) | 2022.03.10 |