코드는 문제에 써있는대로 그대로 쓰면 된다. 주어지는 숫자 5개 변수 지정하고 맥박+T 하고 만약 최대맥박보다 높으면 휴식하게 만들면 된다. 운동할 때마다 N을 1씩 떨어트리고 운동+휴식한 시간을 모두 더한 count를 출력하면 된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int N = in.nextInt(); //운동시간
int m = in.nextInt(); //초기맥박
int M = in.nextInt(); //최대맥박
int T = in.nextInt(); //1분 운동 후 증가 맥박
int R = in.nextInt(); //1분 휴식 후 떨어지는 맥박
int min = m;//최소맥박
int count = 0; //운동+휴식한 시간
if((M-m) < T) { //운동 시간이 1분 미만일 경우
System.out.println(-1);
}else {
while(true) {
if((m + T) <= M) {
m += T; //맥박을 분마다 상승시킴
N--; //운동할 때마다 1분씩 줄임(0되면 끝)
}else {
m = m - R; //최대맥박이 되면 휴식해서 맥박 떨어트림
}
if(m < min) { //최소맥박보다 적어지면
m = min; //맥박=최소맥박
}
count++;
if(N == 0) break;
}
System.out.println(count);
}
}
}
문제를 풀면서 while문으로 풀면 더 쉬울 것 같은데 for문이 더 익숙해서 for로만 풀려고 하는 버릇이 있다는걸 깨달았다.
둘 다 많이 써서 익숙해지는 수밖에...
'Study > 알고리즘' 카테고리의 다른 글
백준 1225번 - 이상한 곱셈 JAVA (0) | 2022.08.10 |
---|---|
1193번 - 분수찾기 JAVA (0) | 2022.08.05 |
백준 1259번 - 팰린드롬수 JAVA (0) | 2022.08.02 |
백준 1159번 - 농구 경기 JAVA (0) | 2022.07.30 |
백준 1157번 - 단어 공부 JAVA (0) | 2022.07.28 |