본문 바로가기
Algorithm/Baekjoon

Baekjoon 5532 방학 숙제 JAVA

by Hunveloper 2023. 4. 21.
728x90

 

5532번: 방학 숙제

한 줄에 하나씩 총 다섯 줄에 걸쳐 L, A, B, C, D가 주어진다. (2 ≤ L ≤ 40, 1 ≤ A, B ≤ 1000, 1 ≤ C, D ≤ 100) 항상 방학 숙제를 방학 기간내에 다 할 수 있는 경우만 입력으로 주어진다.

www.acmicpc.net

문제

상근이는 초등학교에 다닐 때, 방학 숙제를 남들보다 먼저 미리 하고 남은 기간을 놀았다. 방학 숙제는 수학과 국어 문제 풀기이다.

방학은 총 L일이다. 수학은 총 B페이지, 국어는 총 A페이지를 풀어야 한다. 상근이는 하루에 국어를 최대 C페이지, 수학을 최대 D페이지 풀 수 있다.

상근이가 겨울 방학동안 숙제를 하지 않고 놀 수 있는 최대 날의 수를 구하는 프로그램을 작성하시오.

입력

한 줄에 하나씩 총 다섯 줄에 걸쳐 L, A, B, C, D가 주어진다. (2 ≤ L ≤ 40, 1 ≤ A, B ≤ 1000, 1 ≤ C, D ≤ 100)

항상 방학 숙제를 방학 기간내에 다 할 수 있는 경우만 입력으로 주어진다.

출력

첫째 줄에 상근이가 놀 수 있는 날의 최댓값을 출력한다.

풀이

이 문제는 Integer로 받아서 나누기 연산을 하게되면 나머지 값을 버리기에 해결 할 수 없는 문제가 된다.

예를 들어서 51페이지를 풀어야 하고 하루에 10문제씩을 풀 수 있다면 Integer로 입력받았을 때는 5가 나오게 될것이다.

하지만 1페이지를 풀기위해서도 하루가 더 필요하기 때문에 float로 입력을 받는다면 5.1으로 계산될것이고,

올림 연산을 이용하면 6이라는 값을 찾을 수 있다.

 

국어와 수학 중 더 많은 날을 L일에서 빼면 되기에 Math.Max연산을 이용해서 더 많은 일수를 빼서, 놀 수 있는 최대 날을 구한다.

코드
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		float l=sc.nextInt(),a=sc.nextInt(),b=sc.nextInt(),c=sc.nextInt(),d=sc.nextInt();
		System.out.println((int)(l-Math.max(Math.ceil(a/c), Math.ceil(b/d))));
	}
}
728x90
728x90

댓글