수행 목적 : Scanner의 입력함수와 다중 조건문을 통한 입장권 계산 로직 작성
간략 소개 : 놀이동산의 입장권은 나이와 기타 우대사항에 따라 입장료가 달라집니다. 문제에서 주어진 조건에 맞는 입장료를 구하는 프로그램을 작성해 보세요.
필수준수사항
- 놀이공원 입장료를 구하는 조건에 맞게 로직 작성
- 입력내용은 나이, 입장시간, 국가유공자 여부, 복지카드 여부 순으로 입력
놀이공원 입장료 할인은 일반 할인과 특별 할인이 있습니다.
조건은 아래와 같습니다.
입장료 할인은 중복할인 되지 않으며, 중복될 경우 가장 할인을 많이 받은 금액으로 정해집니다.
- 3세미만이면 무료 입장
- 복지카드와 국가유공자의 경우 일반 할인 적용
- 13세미만이면 특별 할인 적용
- 17시이후에 입장하면 특별 할인 적용
기본 입장료 : 10,000원
특별 할인의 경우 : 4,000원
일반 할인의 경우 : 8,000원
import java.util.Scanner;
/**
* 놀이동산 입장권 계산 프로그램
*/
public class TiketPayment {
public static void main(String[] args) {
int age = 0;
int entryTime = 0;
String nationalMerit = "n";
String welfareCard = "n";
int entranceFee = 0;
final int BASIC_ENTRANCE_FEE = 10000;
final int GENERAL_DISCOUNT = 2000;
final int SPECIAL_DISCOUNT = 6000;
System.out.println("[입장권 계산]");
Scanner sc = new Scanner(System.in);
System.out.print("나이를 입력해 주세요.(숫자):");
age = sc.nextInt();
System.out.print("입장시간을 입력해주세요.(숫자입력):");
entryTime = sc.nextInt();
System.out.print("국가유공자 여부를 입력해주세요.(y/n):");
nationalMerit = sc.next();
System.out.print("복지카드 여부를 입력해주세요.(y/n)");
welfareCard = sc.next();
entranceFee = BASIC_ENTRANCE_FEE;
if (age >= 13) {
if (nationalMerit.equalsIgnoreCase("y") || welfareCard.equalsIgnoreCase("y")) {
if (entryTime >= 17) {
entranceFee -= SPECIAL_DISCOUNT;
} else {
entranceFee -= GENERAL_DISCOUNT;
}
} else if (entryTime >= 17) {
entranceFee -= SPECIAL_DISCOUNT;
}
} else if (age < 13 && age > 3) {
entranceFee -= SPECIAL_DISCOUNT;
} else {
entranceFee = 0;
}
System.out.printf("입장료: %d", entranceFee);
sc.close();
}
}
final을 이용해 기본요금과 일반할인요금, 특별할인요금을 상수로 만들어줬다.
상수를 사용할 때는 변수명을 대문자로 적고 다른 단어 사이에는 '-'(언더바)로 구분한다.
사용자로 부터 나이, 입장시간, 국가유공자 여부, 복지카드 여부를 입력받는다.
중복할인이 되지 않고, 중복 할인 시 가장 할인이 많이 되는 금액으로 정해지기 때문에
주어진 조건에서 할인이 큰 순서로 조건문을 분기했다.
먼저 3세미만 시 무료, 13세 미만 시 특별 할인 적용이기 때문에
age를 기준으로 if-else if-esle로 분기했고,
이후로는 복지카드 여부와 국가유공자 여부를 먼저 체크한 뒤에
입장 시간이 17시 이후인지로 분기했다.
결과값은 0원인 입장료를 기본 입장료로 세팅 후 입장료에서 각 할인 금액을 제외한 금액을 출력하게끔 로직을 작성했고,
3세미만이면 입장료를 다시 0원으로 세팅 후 출력했다.
실행결과
2024.04.11 - [Back-End/zero-base] - 결제 금액 캐시백 계산 프로그램 제로베이스 백엔드 스쿨 미니과제 2
2024.04.10 - [Back-End/zero-base] - 콘솔 화면에 구구단 출력하기 제로베이스 백엔드 스쿨 미니과제 1
'📌Zero-base' 카테고리의 다른 글
달력 출력 프로그램 제로베이스 백엔드 스쿨 미니과제 5 (0) | 2024.04.12 |
---|---|
주민등록번호 생성 프로그램 제로베이스 백엔드 스쿨 미니과제 4 (0) | 2024.04.12 |
결제 금액 캐시백 계산 프로그램 제로베이스 백엔드 스쿨 미니과제 2 (0) | 2024.04.11 |
콘솔 화면에 구구단 출력하기 제로베이스 백엔드 스쿨 미니과제 1 (0) | 2024.04.10 |
프론트엔드와 백엔드 차이 - 백엔드 개발자가 되고 싶은 이유 (0) | 2024.04.08 |