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)을 출력합니다.