백준 22864 (완전탐색_피로도)

EunBi Na·2022년 4월 21일
0

링크텍스트

문제

하루에 한 시간 단위로 일을 하거나 일을 쉬어도 된다. 하루에 한 시간 일하면 피로도는 AA 만큼 쌓이고 일은 BB 만큼 처리할 수 있다.

만약에 한 시간을 쉰다면 피로도는 CC 만큼 줄어든다. 단, 피로도가 음수로 내려가면 0으로 바뀐다. 당연히 일을 하지 않고 쉬었기 때문에 처리한 일은 없다.

피로도를 최대한 MM 을 넘지 않게 일을 하려고 한다. MM 를 넘기면 일하는데 번아웃이 와서 이미 했던 일들도 다 던져버리고 일을 그만두게 된다.

번아웃이 되지 않도록 일을 할때 하루에 최대 얼마나 일을 할 수 있는지 구해보자. 하루는 24시간이다.

입력

첫 번째 줄에 네 정수 AA, BB, CC, MM이 공백으로 구분되어 주어진다.

맨 처음 피로도는 0이다.

출력

하루에 번 아웃이 되지 않도록 일을 할 때 최대 얼마나 많은 일을 할 수 있는지 출력한다.

제한

1A1,000,0001 \le A \le 1,000,000
1B10,0001 \le B \le 10,000
1C10,0001 \le C \le 10,000
1M1,000,0001 \le M \le 1,000,000

예제 입력 1

5 3 2 10

예제 출력 1

24

파이썬 풀이

import sys
import math
input = sys.stdin.readlin

A, B, C, M = map(int, imput().split())

pirodo = 0
work = 0

If A>m : pirodo(0)
else:
	for i in range(1, 25):
    	if pirodo + A <= M:
        	pirodo += A
            workd += B
        
        else:
        	if pirodo - C >= 0:
            	pirodo -= C
                else: pirodo = 0
                
     print(work)

자바 풀이

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()), b = Integer.parseInt(st.nextToken()), c = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		
		int count = 0, p = 0, answer = 0;
		while(count != 24) {
			if(p + a <= m) {
				answer += b;
				p += a;
			}
			else {
				p = p - c < 0 ? 0 : p - c;
			}
			count++;
		}
		System.out.print(answer);
	}
}
profile
This is a velog that freely records the process I learn.

0개의 댓글