[Bronze I][JAVA]3226번:전화 요금

호수·2024년 4월 29일
0

JAVA 알고리즘

목록 보기
57/67
post-thumbnail
post-custom-banner

문제 바로가기> [Bronze I]3226번:전화 요금

풀이과정

문제의 요구사항은 다음과 같습니다.

  • 7:00부터 19:00까지는 1분에 10원,
    19:00부터 7:00까지는 1분에 5원입니다.
  • DD는 최대 60입니다.

전화가 끝나는 시간(end_H)과 분(end_M)을 계산

            if (M + D < 60) {
                end_M = M + D;
            } else {
                int Q = (M + D) / 60;
                end_M = (M + D) % 60;
                if (H + Q < 24) {
                    end_H = H + Q;
                } else {
                    end_H = (H + Q) % 24;
                }
            }
  • 60분 초과하는 경우 처리
  • 24시간을 초과하는 경우 처리

요금을 계산

  • 6시부터 7시 사이에 전화를 건 경우: (D - end_M) 5(5원 요금) + end_M 10(10원 요금)
  • 18시부터 19시 사이에 전화를 건 경우: (D - end_M) 10(10원 요금) + end_M 5(5원 요금)
  • 그 외의 경우:
    6시 이전이거나 19시 이후에 전화를 건 경우: 10원 요금이 적용됩니다.
    그 외의 경우는 5원 요금

정답

import java.io.IOException;
import java.util.Scanner;

public class Main {
    public static void main(String args[]) throws IOException {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int ans = 0;

        for (int i = 0; i < N; i++) {
            String line = sc.next();
            int H = Integer.parseInt(line.substring(0, 2));
            int M = Integer.parseInt(line.substring(3, 5));
            int D = sc.nextInt();

            int end_H = H, end_M = M;

            if (M + D < 60) {
                end_M = M + D;
            } else {
                int Q = (M + D) / 60;
                end_M = (M + D) % 60;
                if (H + Q < 24) {
                    end_H = H + Q;
                } else {
                    end_H = (H + Q) % 24;
                }
            }

            if (H == 6 && end_H == 7) {
                ans += (D - end_M) * 5 + end_M * 10;
            } else if (H == 18 && end_H == 19) {
                ans += (D - end_M) * 10 + end_M * 5;
            } else {
                if (6 < H && H < 19) {
                    ans += 10 * D;
                } else {
                    ans += 5 * D;
                }
            }
        }
        System.out.println(ans);
    }
}
profile
Back-End개발자 성장과정 블로그🚀
post-custom-banner

0개의 댓글