시뮬레이션 문제입니다
PC방 요금을 최소한으로 냈을 때 금액을 출력해야합니다.
2가지 방법이 있습니다.
1. 1시간에 1000원 지불
2. 22:00 ~ 08:00 5000원 지불
10시~3시의 경우 남은시간이 5시간 이상이면 2번을 실행하고
그 외에는 전부 1번으로 진행해서 계산해주었습니다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int ts = Integer.parseInt(br.readLine());
for (int t = 0; t < ts; ++t) {
StringTokenizer st = new StringTokenizer(br.readLine());
String s = st.nextToken();
String[] time = s.split(":");
int curTime = Integer.parseInt(time[0]) * 60 + Integer.parseInt(time[1]);
int useTime = Integer.parseInt(st.nextToken());
int result = 0;
while (useTime > 0) {
if (curTime < 180) {
if (useTime > 240) {
useTime -= 480 - curTime;
curTime = 481;
result += 5;
} else {
result += (useTime + 59) / 60;
useTime = 0;
}
} else if (curTime >= 1320) {
if (useTime > 240) {
useTime -= (1440 - curTime + 480);
curTime = 481;
result += 5;
} else {
result += (useTime + 59) / 60;
useTime = 0;
}
} else {
useTime -= 60;
curTime += 60;
result += 1;
}
}
result *= 1000;
bw.write(result + "\n");
}
bw.close();
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 5639번 이진 검색 트리 (0) | 2023.06.28 |
---|---|
[Java] 백준 17404번 RGB거리 2 (0) | 2023.06.27 |
[Java] 백준 16432번 떡장수와 호랑이 (0) | 2023.06.23 |
[Java] 백준 17088번 등차수열 변환 (0) | 2023.06.22 |
[Java] 백준 12904번 A와 B (0) | 2023.06.22 |