728x90
문제설명
입력 & 출력
나의 풀이
이번 백준 1173번 - 운동 문제는 운동을 하는 동안 심박수의 변화와 휴식 시간을 고려하여 운동 목표를 달성하기 위해 걸리는 최소 시간을 계산하는 문제입니다.
문제의 핵심은 "실제 운동 시간"입니다. 목표 운동 시간 N분을 달성하기 위해 몇 분이 걸리는지를 계산하는 것입니다.
입력 처리
BufferedReader로 입력을 받아주고, StringTokenizer를 사용하여 공백을 기준으로 입력값 N, m, M, T, R 를 받아줍니다.
운동 불가능 여부 확인
문제 설명에 따라 초기 맥박수 m에 운동 시 증가량 T를 더한 값(m + T)이 최대 맥박수 M보다 클 경우, 운동이 불가능하므로 바로 -1을 출력하고 종료합니다.
운동 및 휴식 처리
- while문을 사용하여 실제 운동 시간(exerciseTime)이 목표 운동 시간(N)에 도달할 때까지 반복합니다.
- 현재 맥박수(pulse)가 운동 가능한 범위(pulse + T <= M) 내에 있으면 운동을 진행하고, 맥박수와 운동 시간(exerciseTime)을 증가시킵니다.
- 그렇지 않으면 휴식을 통해 맥박수를 감소시키며, 감소 후 맥박수는 초기 맥박수(m) 이하로 내려가지 않도록 Math.max 메서드를 사용합니다
결과 출력
반복문이 종료되면 운동 목표를 달성하기 위해 걸린 총 시간(time)을 출력합니다.
'Coding Test > 백준' 카테고리의 다른 글
[백준, 1296번] 팀 이름 정하기 (구현, 문자열, 정렬, HashMap, Java) (0) | 2024.11.16 |
---|---|
[백준, 1233번] 주사위 (브루트 포스, 구현, Java) (2) | 2024.11.16 |
[백준, 16916번] 부분 문자열 (KMP, Java) (1) | 2024.11.14 |
[백준 1837번] 암호 제작 (브루트 포스, 완전 탐색, Java) (2) | 2024.11.14 |
[백준] 대회 or 인턴 (그리디 알고리즘, Java) (0) | 2024.11.11 |