Study/알고리즘

백준 1173번 - 운동 JAVA

토기발 2022. 8. 4. 16:45

 

 

코드는 문제에 써있는대로 그대로 쓰면 된다. 주어지는 숫자 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