본문 바로가기
백준/20001 - 25000

[백준] 22864번 : 피로도(JAVA)

by lms0806 2021. 8. 10.
728x90
반응형

https://www.acmicpc.net/problem/22864

 

22864번: 피로도

첫 번째 줄에 $A$, $B$, $C$, $M$이 공백으로 구분되어 주어진다. (하루는 24시간이다.) 맨 처음 피로도는 0이다.

www.acmicpc.net

풀이

피로도 증가될 양 + 현재 피로도 <= 최대치 일 경우에 피로도를 증가시키면서 처리량을 증가시킵니다.

아닐 경우 피로도를 줄어드는 피로도만큼 빼줍니다. (여기서 감소된 피로도가 음수면 0으로 초기화해줍니다.)

 

소스코드

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);
	}
}
728x90
반응형

댓글