package CHAPTER03;

import java.util.Scanner; 

public class REAL_TaxiFareCalculator { // 택시 요금 계산기 클래스
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Scanner 객체 생성

        int distance, time, fare;
        int baseFare = 4800;       // 기본 요금
        int baseDistance = 1600;   // 기본 거리(미터)
        int perMeterFare = 100;    // 131m당 100원 추가 요금
        int lateNightExtra = 0;    // 심야 할증 요금
        int premiumCabExtra = 0;   // 프리미엄 택시 추가 요금

        // 사용자 입력 받기
        System.out.print("택시 이용 거리를 미터 단위로 입력하세요: ");
        distance = scanner.nextInt();

        System.out.print("택시 이용 시간을 입력하세요 (예: 2230 → 오후 10시 30분): ");
        time = scanner.nextInt();

        // 심야 할증 계산
        if (time >= 2200 || time <= 400) { // 심야 시간대
            if (time >= 2300 || time <= 200) {
                lateNightExtra = (int)(baseFare * 0.4); // 40% 할증
            } else {
                lateNightExtra = (int)(baseFare * 0.2); // 20% 할증
            }
        }

        // 거리 기반 요금 계산
        if (distance <= baseDistance) {
            fare = baseFare;
        } else {
            int extraDistance = distance - baseDistance;
            // 131m 단위마다 100원 추가, 남은 거리가 있으면 1회 더 추가
            int extraFare = ((extraDistance / 131) + (extraDistance % 131 != 0 ? 1 : 0)) * perMeterFare;
            fare = baseFare + extraFare;
        }

        // 프리미엄 택시 여부 확인
        System.out.print("프리미엄 택시를 이용하십니까? (예: 1, 아니요: 0): ");
        int premiumCab = scanner.nextInt();
        if (premiumCab == 1) {
            premiumCabExtra = 2200;
        }

        // 최종 요금 계산
        fare += lateNightExtra + premiumCabExtra;

        // 결과 출력
        System.out.println("총 택시 요금은 " + fare + "원입니다.");

        scanner.close(); 
    }
}
