반응형
풀이
본문 내용과 같이 조건을 걸어 구현해 낸다.
자바
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 t_minute = 0; // 운동시간 분
int r_minute = 0;// 휴식시간 분
int x = m; // 현재 맥박
while (true) {
// 운동시간이 운동할 시간과 같아지면 운동시간과 휴식시간의 합을 출력하고 종료
if (t_minute == N) {
System.out.println(t_minute + r_minute);
break;
}
// 현재 맥박수 + 운동시간이 제한 맥박 이하일경우
else if (x + T <= M) {
x += T;
t_minute += 1;
}
// 현재 맥박수 + 운동시간이 제한 맥박 이상일경우
else if (x + T > M) {
x -= R;
r_minute += 1;
// 시작 맥박수 + 운동시간이 제한 맥박 이상일경우 -1출력후 종료
if (m + T > M) {
System.out.println(-1);
break;
}
// 현재 맥박이 시작 맥박보다 작을경우
else if (x < m) x = m;;
}
}
}
}
파이썬
N, m, M, T, R = map(int, input().split())
t_minute = 0 # 운동한 시간 분
r_minute = 0 # 휴식한 시간 분
x = m # 현재 맥박
while True:
# 운동시간이 운동할 시간과 같아지면 운동시간과 휴식시간의 합을 출력하고 종료
if t_minute == N:
print(t_minute + r_minute)
break
# 현재 맥박수 + 운동시간이 제한 맥박 이하일경우
elif x + T <= M:
x += T
t_minute += 1
# 현재 맥박수 + 운동시간이 제한 맥박 이상일경우
elif x + T > M:
x -= R
r_minute += 1
# 시작 맥박수 + 운동시간이 제한 맥박 이상일경우 -1출력후 종료
if m + T > M:
print(-1)
break
# 현재 맥박이 시작 맥박보다 작을경우
elif x < m:
x = m
'백준' 카테고리의 다른 글
17224번: APC는 왜 서브태스크 대회가 되었을까? (0) | 2022.02.15 |
---|---|
14487번: 욱제는 효도쟁이야!! (0) | 2022.02.15 |
1546번: 평균 (0) | 2022.02.15 |
1110번: 더하기 사이클 (0) | 2022.02.15 |
2810번: 컵홀더 (0) | 2022.02.15 |