알고리즘

[알고리즘] 백준 - PC방 요금 (9080)

무토(MUTO) 2021. 11. 1. 00:58

  1. 1시간마다 시간을 체크하는 방식으로 문제를 푸는 방식이 편리하다.

  2. 맨처음 진입조건에서 22시 ~ 3시에 pc방 이용을 시작하고 남은 시간이 300분 이상 남았으면 정액제를 이용한다.
    두번째 진입조건부터는 남은시간이 300분 이상인지만 체크하면 된다.

  3. 아니라면 일반 사용으로 계산한 후 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