백준 2869번 : 달팽이는 올라가고 싶다(Java)

정선모·2022년 3월 1일
0

백준

목록 보기
3/10

문제 :
땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.
달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.
달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입력 :
첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

출력 :
첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

Scanner와 Java 11을 사용하면 시간초과로 절대 통과할 수 없는 문제였습니다. Scanner와 Java 8을 사용하면 문제해결은 가능하지만 BufferedReader 사용을 권장하는 문제라고 합니다. 수학문제는 여전히 쉽지않습니다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		int up = in.nextInt(); // A
		int down = in.nextInt(); // B
		int length = in.nextInt(); // V
		
		in.close();
		
		// 하루동안 총이동량은 up - down이다.
		// 낮동안 정점에 올라갔을때는 down이 발생하지 않는다는 조건이 있으므로
		// length에서 down을 뺀 값에서 총 이동량을 나누면 몇일 걸리는지 알수있다.
		int day = (length - down) / (up - down);
		
		// 나머지가 있을 경우(남은 길이가 있을경우)
		if((length - down) % (up - down) != 0) {
			// 다음날 낮에 정점에 도달하므로 day++
			day++;
		}
		System.out.println(day);

	}
}

문제 풀이에 참고한 링크

profile
개발자가 되어가는 비전공자

0개의 댓글

관련 채용 정보