package CHAPTER03; 

import java.util.Scanner; 

public class LAB01_REAL_SubwayFare2025 { //지하철 요금 계산 프로그램
	
    public static void main(String[] args) { 
        Scanner scanner = new Scanner(System.in); 

        // 사용자에게 나이를 입력받음
        System.out.print("나이를 입력하세요: ");
        int age = scanner.nextInt();

        // 사용자에게 이동 거리를 입력받음
        System.out.print("이동 거리를 입력하세요(km): ");
        int distance = scanner.nextInt();

        int baseFare; // 기본 요금을 저장할 변수

        // [1단계] 기본 요금 계산 (연령대별 요금 정책)
        if (age <= 5 || age >= 65) { 
            baseFare = 0; // 5세 이하 또는 65세 이상은 무료
        } else if (age >= 6 && age <= 12) { 
            baseFare = 550; // 어린이 요금
        } else if (age >= 13 && age <= 18) { 
            baseFare = 900; // 청소년 요금
        } else { 
            baseFare = 1550; // 성인 요금
        }

        int extraFare = 0; // 거리 초과 요금 초기값 0원

        // [2단계] 거리 초과 요금 계산
        // 기본 요금이 있는 경우(무료 제외) + 10km 초과 시 추가 요금 부과
        if (baseFare > 0 && distance > 10) {

            // (1) 10~50km 구간: 5km당 100원 추가
            if (distance <= 50) {
                // 초과 거리 / 5km 단위 올림 계산 (예: 13km → (13-10)/5=0.6 → 1단위)
                int extraSection = (int) Math.ceil((distance - 10) / 5.0);
                extraFare += extraSection * 100; // 1단위당 100원 추가
            } 
            // (2) 50km 초과 구간: 10~50km 구간 요금 + 이후 8km당 100원 추가
            else {
                extraFare += 8 * 100; // 10~50km까지 40km 구간: (40/5=8단위)
                int extraSection = (int) Math.ceil((distance - 50) / 8.0);
                extraFare += extraSection * 100; // 50km 초과분 8km당 100원
            }
        }

        int totalFare; // 총 요금 변수 선언

        // [3단계] 총 요금 계산
        // 무료 대상자는 0원, 나머지는 기본요금 + 추가요금
        if (age <= 5 || age >= 65) {
            totalFare = 0;
        } else {
            totalFare = baseFare + extraFare;
        }

        // [4단계] 결과 출력
        // %,d : 천 단위 콤마 표시 / %n : 줄바꿈
        System.out.printf("운임 요금은 %,d원입니다.%n", totalFare);

        scanner.close(); 
    }
}
