백준
백준 2869 달팽이는 올라가고 싶다(Java)
Park DJ
2023. 1. 13. 20:29
https://www.acmicpc.net/problem/2869
2869번: 달팽이는 올라가고 싶다
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
www.acmicpc.net
해석 및 팁
이문제의 핵심은 시간 제한이다. 따라서 sc.nextInt를 사용하면 시간초과가 발생한다. 그렇기 때문에 BufferReader을 사용해주어야하며 간결하게 짜야한다. 막대기의 길이가 V일때 하루에 가는거리가 A 떨어지는 거리가 B라고 했을때
V - A가 하루에 가는거리는 A - B로 나누어 떨어지면 그다음갈 A만큼만 가면 되기때문에 몫에서 1만더해주면된다.
나누어 떨어지지 않는 경우는 그다음만 A보다 더 가야하기 때문에 2일이 더필요하므로 몫에다 2를 더해주면 된다.
Java 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
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());
if((v-a)%(a-b) == 0) System.out.println(((v-a)/(a-b))+1);
else System.out.println(((v-a)/(a-b))+2);
}
}