-
[백준/BOJ] 1173번 : 운동 (JAVA / 자바)백준 2022. 2. 13. 23:51
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/1173
- 문제 -
난이도 브론즈 2 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
반복문으로 계속 돌리고, 반복 횟수를 구하자.
하지만 그 전에 입력값이 운동이 가능한 값인지 판단 후 아니면 -1 출력을 가능하면 그때 반복문을 돌린다.
처음 현재 맥박 값이 최소 맥박 값이기 때문에 min 변수를 만들어 저장해준다.
현재 맥박인 m에 운동을 한 후 맥박 증가량인 T값을 더했을 때, 맥박 최댓값인 M을 초과하는지 확인한다. 초과하면 휴식으로 맥박을 떨어뜨려야하니 휴식시 맥박 감소량인 R을 빼준다. 초과하지 않고 이하이면은 T를 더해준다. 그렇게 무한루프를 돌려주는데 무한루프가 종료되는 시점이 있어야 하는데 그것은 바로 운동횟수인 M만큼 운동을 했을 경우다. 운동해서 +T를 해줄때마다 M에 -1을 해준다. 그렇게 M이 0이 되는 시점에 무한루프를 종료하고 그때까지 반복된 횟수를 출력한다.
코드를 보기전에 하나만 더 보자. -R을 해줫을때 m의 값이 최소 맥박 수 인 min 값보다 낮아진다면 현재 맥박수를 최소 맥박수로 맞춰줘야 한다. m = min을 하라는 것이다.
코드를 보자.
-풀이-
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 N = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); int T = Integer.parseInt(st.nextToken()); int R = Integer.parseInt(st.nextToken()); //최소 맥박 값 int mix = m; //반복 값 저장할 변수 int count = 0; //운동을 한번도 못할 경우 -1 출력 if((M - m) < T) { System.out.println(-1); }else { //무한루프 while(true) { if((m + T) <= M) { m += T; N--; }else { m -= R; } //쉬었을때 값이 최소 맥박보다 낮으면 최소 맥박 저장 if(m < mix) { m = mix; } count++; //주어진 운동 횟수를 다 하면 무한루프 종료 if(N == 0) break; } System.out.println(count); } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 1193번 : 분수찾기 (JAVA / 자바) (1) 2022.02.14 [백준/BOJ] 1157번 : 단어 공부 (JAVA / 자바) (0) 2022.02.14 [백준/BOJ] 1159번 : 농구 경기 (JAVA / 자바) (0) 2022.02.13 [백준/BOJ] 1152번 : 단어의 개수 (JAVA / 자바) (0) 2022.02.13 [백준/BOJ] 10872번 : 팩토리얼 (JAVA / 자바) (0) 2022.02.13