[백준/JAVA] 2869: 달팽이는 올라가고 싶다

농담곰·2023년 7월 11일

백준

목록 보기
4/33

[백준/JAVA] 2869: 달팽이는 올라가고 싶다

처음 문제를 봤을 때 무슨 소린지 잘 와닿지가 않았는데 이해만 하면 의외로 간단한 문제이다.

v미터의 막대기가 있는데 달팽이는 하루에 a미터 올라가고 b미터 미끄러지는 것을 반복한다. 즉 v+a-b+a-b... 이다.

주의해야 할 점은 정상에 올라간 후엔 b만큼 미끄러지지 않는다는 것이다. 즉 낮에 a미터 올라간 상태에서 이미 v미터를 넘어섰다면 b를 빼서는 안된다.

처음에는 v/(a-b)하면 되겠다고 생각했는데 (v-b)(a-b)하면 막대기 길이 v에서 b만큼을 먼저 제외하고 (a-b)로 나누므로 밤에 미끄러지는 경우를 처리 가능했다.

(v-b)(a-b)의 나머지가 존재한다면 낮에 올라가서 정상에 도달하는 경우이므로 밤에 미끄러지지 않는다. 만약 딱 나누어 떨어진다면 밤에 올라가서 정상에 도달하는 경우이다.

소스코드


import java.util.*;
import java.io.*;

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-b)%(a-b)>0)
    		System.out.println((v-b)/(a-b)+1);
    	else 
    		System.out.println((v-b)/(a-b));
    }
}

0개의 댓글