[백준 알고리즘] 2869번 달팽이는 올라가고 싶다 Java

2020. 6. 15. 23:39

달팽이가 막대기를 올라가고 싶단다.

높이가 v 인 나무 막대를 달팽이가 올라가는데

낮에는 a미터 올라가고 밤에는 b미터 미끄러진다.

v : 높이

a : 낮에 움직이는 거리

b : 밤에 미끄러지는 거리

d : 올라가는데 걸리는 날

중요한 점은 낮에 올라가면 다시 미끄지지 않기 때문에 먼저 d 를 1 올려주고 v 를 a만큼 먼저 내리고 계산한다.

( a * d ) - ( b * d ) = ( v - a )

( a - b ) * d = ( v - a )

d = ( v - a ) / ( a - b ) 이다

나머지가 0이라면 ( v - a ) / ( a - b ) + 1 이 답이고

나머지가 있다면 ( v - a ) / ( a - b ) + 2 가 답이다. 코드는

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class back2869 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		long a = Long.parseLong(st.nextToken());
		long b = Long.parseLong(st.nextToken());
		long v = Long.parseLong(st.nextToken());
		if((v-a)%(v-b)==0) {
			System.out.println(((int) (((v-a)/(a-b))+1)));
		}else {
			System.out.println((int) (((v-a)/(a-b))+2));
		}
		br.close();
    }
}

처럼 작성했다

BELATED ARTICLES

more