728x90
이런 과제 하고 있으니까 오랜만에 학교 다니는 느낌이었다 ,, 낄낄
💰주택용 전기요금 (저압) 계산법
저압의 경우 100kWh 이하는 kWh당 60.7원, 100kWh 초과는 125.9원, 200kWh 초과는 187.9원, 300kWh 초과는 280.6원, 400kWh 초과는 417.7원, 500kWh초과는 670.6원의 전력량 요금을 내야한다.
예시
=========================
주택용 전기요금(저압) 계산기
=========================
99kWh의 전기 요금은 6009.3원 입니다.
150kWh의 전기 요금은 12365.0원 입니다.
📌 처음 생각했던 풀이는 100의 자리 숫자에 따라 계산을 하는 것이었는데 이상이 아닌 초과로 범위가 나눠지는 거라 200, 300처럼 나누어 떨어지는 전력 사용량에 오류가 났다.
그래서 생각한 방법은 예를 들어 전력 사용량이 299kWh라고 가정했을 때,
사용 요금은 100*60.7 + 100*125.9 + 99*187.9 이다.
따라서 전력 사용량을 100kWh 단위로 끊어서 계산해주면 된다.
재귀함수를 사용해서 사용량≥100 이면
1. 비용+=100*60.7
2. 사용량 -= 100
위 1, 2번을 반복하도록 만들었다.
기능 구현
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ElectricityBill {
static double cost = 0;
static int index = 0;
public static void main(String[] args) throws IOException {
System.out.println("=".repeat(25));
System.out.println(" 주택용 전기요금(저압) 계산기 ");
System.out.println("=".repeat(25));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("전력 사용량을 입력해주세요.");
double N = Double.parseDouble(br.readLine());
double pay = calculate(N);
System.out.println(N+"kwh의 전기 요금은 "+pay+"원 입니다.");
}
public static double calculate(double N) {
double[] tax = new double[] {60.7, 125.9, 187.9, 280.6, 417.7, 670.6};
if(N>=100) {
cost += 100*tax[index];
if(index<5) index++; //500kWh 초과는 초과분 요금이 동일하기 때문에 index를 고정시켜 준다.
calculate(N-100);
}
else cost += N*tax[index];
return cost;
}
}
결과
728x90
반응형
'CodeStates_BE_44 > 과제' 카테고리의 다른 글
텍스트 스타크래프트 프로그램 만들기 (0) | 2023.02.24 |
---|---|
편의점 발주 프로그램 만들기 (0) | 2023.02.23 |
피보나치 수열 프로그램 만들기 (0) | 2023.02.23 |
자막 순화 프로그램 만들기 (0) | 2023.02.22 |
구구단 프로그램 만들기 (0) | 2023.02.22 |