일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- fetch
- get
- atlas
- mongodb
- body
- Crawling
- frontend
- PYTHON
- pymongo
- Project
- OOP
- beautifulsoup
- portfolio
- openapi
- javascript
- CSS
- CRUD
- synology
- java
- POST
- flaskframework
- mysql
- requests
- backend
- Algorithm
- flask
- github
- NAS
- venv
- json
Archives
- Today
- Total
wisePocket
[Algorithm] 음식과 음료 주문, 계산서를 출력하는 계산기 만들기 본문
Java & Algorithm/Algorithm Practice
[Algorithm] 음식과 음료 주문, 계산서를 출력하는 계산기 만들기
ohnyong 2023. 8. 2. 11:41
음식과 음료 주문, 계산서를 출력하는 계산기
정해진 나의 룰에 따라서 연습 문제를 계속해서 답안을 보지 않고 스스로 풀어보고자 한다.
핵심이 되었던 연습 과정은 아래 두개 과정이다.
물론 이 구조가 이제 Java를 배우면서 더 깊게 변경 될 예정이다.
하지만 해당 카테고리 페이지는
알고리즘 문제 해결을 하기 위한 연습이 주 목적이라서
기본적으로 내가 객체 인스턴스화를 통해 메서드 호출을 구분하면서
"연산"에 집중 할 수 있는 나만의 틀로 활용하고자 한다.
https://ohnyong.tistory.com/177
[Algorithm★] 4칙연산을 해주는 계산기 - 객체 지향 - 혼자 만들기+ChatGPT의 피드백 받기
https://ohnyong.tistory.com/178
[Algorithm★] 4칙연산을 해주는 계산기 - 객체 지향 - 혼자 만들기+ChatGPT의 피드백 적용
오늘은 추가적으로 "%,d원" 으로 printf의 숫자, 가격 등 표시 할 때 3자리마다 ,콤마를 표기하여 출력을 깔끔하게 만들어주는 표현을 얻었다.
1. 문제 파악 과정
- 필요 데이터 파악
+--- 데이터 타입 확인
- 필요 메서드 파악
+--- 기본 입력부 input(){}
+-- 입력 값 갯수 확인
+-- 데이터 제한조건 파악(유효성검사 while loop)
+--- 기본 계산부 calculate(){}
+-- 필요 연산 확인
+-- 필요 조건 확인
+--- 기본 출력부 output(){}
+-- 출력할 데이터, 내용 확인
+--- 각 메서드 별 파라미터 전달 필요 부분 확인
2. 코드 작성 과정
- Main.java 실행부 생성 , Solution.java 클래스(설계도) 생성
- 클래스 member 구현
+--- 필요 데이터 정리에 따라 변수 선언
+--- 기본 생성자 선언
+--- 필요 메서드 정리에 따른 메서드 선언
+-- input(){}과 관련된 메서드부터 작성, 유효성 체크(진입부 메서드)
+-- calculate(){}의 실제 연산 로직 작성
+-- output(){}의 출력 관련 정리
- 실행부 Main.java에서 객체 인스턴스 생성 및 객체로부터 진입부 메서드 호출
1. Main.java
package Algorithm06; public class Main { public static void main(String[] args) { //System.out.println("문제 설명\n" + // "머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. \n" + // "양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다.\n" + // " 정수 n과 k가 매개변수로 주어졌을 때,\n" + // " 양꼬치 n인분과 음료수 k개를 먹었다면 \n" + // "총얼마를 지불해야 하는지 return 하도록" + // "\b solution 함수를 완성해보세요.\n" + // "\n" + // "제한사항\n" + // "0 < n < 1,000\n" + // "n / 10 ≤ k < 1,000\n" + // "서비스로 받은 음료수는 모두 마십니다."); Solution solution = new Solution(); solution.inputOrder(); } }
2. Solution.java
package Algorithm06; import java.text.DecimalFormat; import java.util.Scanner; public class Solution { /*"머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. \n" + // lambDish , sodaCharge, sodaFree=lambDish 10th +1 "양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다.\n" + // lambPrice 12000, sodaPrice 2000 " 정수 n과 k가 매개변수로 주어졌을 때,\n" + " 양꼬치 n인분과 음료수 k개를 먹었다면 \n" + order(int lambDish, int sodaCan){return bill} "총얼마를 지불해야 하는지 return 하도록" + "\b solution 함수를 완성해보세요.\n" + "\n" + "제한사항\n" + "0 < n < 1,000\n" + "n / 10 ≤ k < 1,000\n" + "서비스로 받은 음료수는 모두 마십니다."); */ int lambDish; int sodaCharge; int sodaFree; int lambPrice; int sodaPrice; int lambBill; int sodaBill; int totalBill; Scanner sc = new Scanner(System.in); public Solution(){ } void inputOrder(){ while(true) { System.out.println("양꼬치는 1인분에 12,000원입니다.\n몇인분 주문하시겠습니까?\n숫자로 입력해주세요."); lambDish = sc.nextInt(); if(lambDish<0 && lambDish>1000){ System.out.println("너무 많은 수를 입력하셨습니다. 1,000개 이하로 다시 입력해주세요."); continue; } break; } while(true){ System.out.println("양꼬치 10인분에 음료수가 1개 무료로 제공되는 이벤트를 진행중입니다."); System.out.println("추가로 주문하시는 음료수는 1개에 2,000원입니다.\n음료는 몇개 주문하시겠습니까?\n숫자로 입력해주세요."); sodaCharge = sc.nextInt(); if (sodaCharge<0 && sodaCharge>1000){ System.out.println("너무 많은 수를 입력하셨습니다. 1000개 이하로 다시 입력해주세요."); continue; } break; } calculate(lambDish, sodaCharge); } void calculate(int lambDish, int sodaCharge) { lambPrice = 12000; sodaPrice = 2000; sodaFree = lambDish/10; lambBill = lambDish*lambPrice; sodaBill = sodaCharge*sodaPrice; totalBill = lambBill+sodaBill; outputBill(lambBill, sodaBill, sodaFree, totalBill); } void outputBill(int lambBill, int sodaBill, int sodaFree, int totalBill){ System.out.printf("주문하신 내용은 다음과 같습니다.\n양꼬치 : %d인분\n음료수 : %d개\n무료음료수 : %d개 이벤트 서비스\n", lambDish, sodaCharge, sodaFree); System.out.printf("--------계산서-------- \n양꼬치 : %,d원\n음료수 : %,d원\n--------------------\n총 금액 : %,d원 입니다.\n--------------------", lambBill, sodaBill, totalBill); } }
'Java & Algorithm > Algorithm Practice' 카테고리의 다른 글
[Algorithm] 원하는 피자 등분, 입력한 인원에 따른 필요한 피자판 수를 구하는 계산기 만들기2 (0) | 2023.08.02 |
---|---|
[Algorithm] 입력한 인원에 따른 필요한 피자판 수를 구하는 계산기 만들기 (0) | 2023.08.02 |
[Algorithm] 입력한 값 까지의 짝수들의 합을 구하는 계산기 만들기 (0) | 2023.08.01 |
[Algorithm] 입력한 각도의 종류를 설명해주는 계산기 만들기 (0) | 2023.08.01 |
[Algorithm] 두 개의 정수가 일치하는지 여부를 알려주는 계산기 만들기 (0) | 2023.08.01 |