1시간마다 시간을 체크하는 방식으로 문제를 푸는 방식이 편리하다.
맨처음 진입조건에서 22시 ~ 3시에 pc방 이용을 시작하고 남은 시간이 300분 이상 남았으면 정액제를 이용한다.
두번째 진입조건부터는 남은시간이 300분 이상인지만 체크하면 된다.아니라면 일반 사용으로 계산한 후 2번 조건으로 진입하거나 남은 시간을 다 소진할 때까지 다시 반복하여 진행한다.
생각없이 문제를 풀면 어려운 문제인것 같다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//https://www.acmicpc.net/problem/9080 [S1] PC방 요금
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String[] split = br.readLine().split(" ");
int hour = Integer.parseInt(split[0].split(":")[0]);
int minute = Integer.parseInt(split[0].split(":")[1]);
int time = Integer.parseInt(split[1]);
int fee = 0;
while (time > 0) {
if ((hour >= 22 || hour < 3) && time > 300) {
while (hour != 8) {
hour = (hour + 1) % 24;
time -= 60;
}
fee += 5000;
time += minute;
minute = 0;
} else {
hour = (hour + 1) % 24;
fee += 1000;
time -= 60;
}
}
bw.write(fee + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
'알고리즘' 카테고리의 다른 글
[알고리즘]프로그래머스 후보키 (0) | 2020.09.11 |
---|---|
[알고리즘] 백준 2309 일곱 난쟁이 (0) | 2020.03.23 |