일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 프로젝트 기획서
- 백준
- 14215번
- 나무 공격
- 2355번
- 7489번
- 20953번
- 자바
- 1362번
- 오블완
- 14592번
- 25904번
- 24267번
- Baekjoon
- 14467번
- 21964
- 14656번
- 1333번
- 티스토리챌린지
- 14322번
- 25642번
- 21866번
- 10409번
- 25576번
- Java
- 14726번
- 10814번
- 1141번
- 1568번
- 5597번
- Today
- Total
suheang
[백준] | JAVA, 자바 | 1173번 - 운동 본문
https://www.acmicpc.net/problem/1173
1173번: 운동
첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다.
www.acmicpc.net
문제 요약 :
운동을 선택한 경우, 영식이의 맥박이 T만큼 증가한다. 즉, 영식이의 맥박이 X였다면, 1분 동안 운동을 한 후 맥박이 X+T가 되는 것이다. 영식이는 맥박이 M을 넘는 것을 원하지 않기 때문에, X+T가 M보다 작거나 같을 때만 운동을 할 수 있다. 휴식을 선택하는 경우 맥박이 R만큼 감소한다. 즉, 영식이의 맥박이 X였다면, 1분 동안 휴식을 한 후 맥박은 X-R이 된다. 맥박은 절대로 m보다 낮아지면 안된다. 따라서, X-R이 m보다 작으면 맥박은 m이 된다.
영식이의 초기 맥박은 m이다. 운동을 N분 하려고 한다. 이때 운동을 N분하는데 필요한 시간의 최솟값을 구해보자. 운동하는 시간은 연속되지 않아도 된다.
( 첫째 줄에 운동을 N분하는데 필요한 시간의 최솟값을 출력한다.. 만약 운동을 N분 할 수 없다면 -1을 출력 )
문제 풀이 :
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 pulse = m;
int exercise = 0;
int total = 0;
if (m + T > M) {
System.out.println(-1);
return;
}
while (exercise < N) {
if (pulse + T <= M) {
pulse += T;
exercise++;
} else {
pulse -=R;
if (pulse < m) {
pulse = m;
}
}
total++;
}
System.out.println(total);
}
}
1. 다섯 정수 N, m, M, T, R 입력받기
2. 변수 pulse, exercise, total 생성, pulse에는 m 값을 저장
3. 만약 m + T가 M 보다 크다면 -1 출력
4. exercise가 N보다 작을 때 while문 실행
5. pulse + T 가 M보다 작거나 같을 때 pulse += T, exercise ++
6. pulse + T가 M보다 크다면 pulse -= R, 만약 pulse가 m 보다 작다면 pulse = m
7. total++, exercise가 N보다 작다면 while문 반복, N보다 크거나 같다면 while문 종료
8. 저장된 total 출력
'알고리즘' 카테고리의 다른 글
[백준] | JAVA, 자바 | 1100번 - 하얀 칸 (0) | 2024.04.22 |
---|---|
[백준] | JAVA, 자바 | 1076번 - 저항 (0) | 2024.04.21 |
[백준] | JAVA, 자바 | 1159번 - 농구 경기 (0) | 2024.04.20 |
[백준] | JAVA, 자바 | 13717번 - 포켓몬 GO (1) | 2024.04.20 |
[백준] | JAVA, 자바 | 25496번 - 장신구 명장 임스 (5) | 2024.04.19 |