[백준] 2869번 달팽이는 올라가고 싶다 (JAVA)

sarah·2023년 1월 16일
0

BaekJoon

목록 보기
2/11

시간 제한이 0.15초로 Scanner를 사용할 시 속도초과가 나온다.
그래서 BufferedReader를 사용하여 문제를 푼다.

  • 올라갈 높이 : A
  • 미끄러지는 높이 :B
  • 총 높이 : V

주의할 점

  • 단순히 V / (A-B) 로 구할 수 있는데, 문제에서 정상에 올라간 후에는 미끄러지지 않는다.
    라는 조건으로 인해서 한번 더 생각을 하고 풀어야 했다.
  • 이를 고려하여 문제를 풀면, 총 높이에서 미끄러지는 높이를 빼고(V-B) 그 값에서 하루 올라가는 높이(A-B)를 나눈다. 여기서 나머지가 0이 아닌 경우, 결과값에서 +1을 해주면 총 일수가 구해진다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());

		int day = (V-B) / (A-B);
		if( (V-B) % (A-B) != 0 ) {
			day++;
		}

		System.out.println(day);
	}
}

0개의 댓글