Blog

[Algorithm]12 옷가게 할인 적용 계산기 만들기

Author
Summary
옷가게 캐셔 계산기
Category
Study
Tags
Algorithm
Favorite
Memory Date
2023/08/06
Progress Status
Done
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
5 more properties
주말이라 편하게 쉬었다. 운동도 오늘만큼은 쉬지만 밀린 집안일을 하고 세차도하느라 평소보다 더 많이 움직인듯 하다. 일부러 쿠팡으로 장보지 않고 트레이더스에 가서 맛있는것도 사먹고 행복한 주말이다. 그래도 저녁에 돌아와서 문제나 풀까 하면서 하나라도 해보려고 했다. 하루 정도는 푹 쉬는 패턴이 좋다~~ 옷가게 포스기에서 볼법한 프로그램이다. 가격별로 할인이 적용되도록 구성해야 하는데, 처음에 input부분에서 모두 해결하려고 하니 복잡해서 다시한번 연산 메서드calculator(){}로 넘겨서 좀 더 편하게 작업 할 수 있었다. 단순히 출력하는 것보다 실제로 마트같은데서 사용하는 포스기가 이런 방식의 프로그램이 들어간건가 궁금하긴 하다.
1. Main.java
package Algorithm11; public class Main { public static void main(String[] args) { Solution solution = new Solution(); solution.inputPrice(); } }
Java
복사
2. Solution.java
연산은 특별히 어렵지 않았다. 나열된 조건에 실수만 하지 않으면 잘 작동한다. 작성해놓고 나니 좀 더 간략하게 작성하는 방법은 없을까? 처음에 input price를 할 때 조건은 아니었지만 첫째자리를 0으로 입력한다 했는데, 내가 이 부분을 컨트롤 하고 싶었는데 입력하는 값이 매번 다르고 substring으로 뭔가 하면 될 것 같았는데 실패했다. 이런 부분을 해결하는 함수가 분명히 있을 것 같은데 찾아봐야겠다.
package Algorithm11; import java.util.Scanner; public class Solution { //옷가게 할인 받기 //문제 설명 //int price 옷 가격 input scanner //int bill 결제 금액 outputBill(){} //머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다. //구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요. // //제한사항 //10 ≤ price ≤ 1,000,000 //price는 10원 단위로(1의 자리가 0) 주어집니다. //소수점 이하를 버린 정수를 return합니다. Math double price; double discount5 = 0.95; double discount10 = 0.90; double discount20 = 0.80; String dcFlag; int bill; int dcDifferbill; Scanner sc = new Scanner(System.in); public Solution() { //기본성생저 } void inputPrice() { while (true) { System.out.println("옷 가격을 입력해주세요."); //10 ≤ price ≤ 1,000,000 price = sc.nextInt(); if (price < 10 || price > 1000000) { System.out.println("금액은 10원~100만원 범위로 입력해주세요."); continue; } System.out.println(price); calculate(price); break; } } //price는 10원 단위로(1의 자리가 0) 주어집니다. //소수점 이하를 버린 정수를 return합니다. Math void calculate(double price) { if (price >= 100000 && price < 300000) { bill = (int)(discount5 * this.price); dcFlag = "5%"; dcDifferbill = (int)this.price - bill; } else if (price >= 300000 && price < 500000) { bill = (int)(discount10 * this.price); dcFlag = "10%"; dcDifferbill = (int)this.price - bill; } else if (price >= 500000) { bill = (int)(Math.floor(discount20 * this.price)); dcFlag = "20%"; dcDifferbill = (int)this.price - bill; }else{ dcFlag = "0"; bill = (int)price; } System.out.println(bill); outputBill(bill, dcFlag, dcDifferbill); } void outputBill(int bill, String dcFlag, int dcDifferbill) { if (dcFlag == "0"){ System.out.printf("해당 상품은 추가 할인이 없으며 결제하실 금액은 %,d원 입니다.",bill); }else { System.out.printf("주문하신 상품은 %s할인이 적용되어\n할인 금액은 %,d원이며\n 결제하실 금액은 %,d입니다.", dcFlag,dcDifferbill,bill); } } }
Java
복사