백준

백준 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);
	}
}