일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- beautifulsoup
- flask
- fetch
- atlas
- portfolio
- mongodb
- Crawling
- CRUD
- backend
- get
- NAS
- javascript
- Project
- frontend
- java
- Algorithm
- body
- synology
- pymongo
- json
- PYTHON
- flaskframework
- openapi
- github
- venv
- CSS
- mysql
- requests
- POST
- OOP
Archives
- Today
- Total
wisePocket
[Algorithm] 출생년도를 구해주는 계산기 만들기 본문
계산기의 기본 틀을 익힌 이후로 나만의 정해진 규칙이 생겼다.
핵심이 되었던 연습 과정은 아래 두개 과정이다.
물론 이 구조가 이제 Java를 배우면서 더 깊게 변경 될 예정이다.
하지만 해당 카테고리 페이지는
알고리즘 문제 해결을 하기 위한 연습이 주 목적이라서
기본적으로 내가 객체 인스턴스화를 통해 메서드 호출을 구분하면서
"연산"에 집중 할 수 있는 나만의 틀로 활용하고자 한다.
https://ohnyong.tistory.com/177
[Algorithm★] 4칙연산을 해주는 계산기 - 객체 지향 - 혼자 만들기+ChatGPT의 피드백 받기
https://ohnyong.tistory.com/178
[Algorithm★] 4칙연산을 해주는 계산기 - 객체 지향 - 혼자 만들기+ChatGPT의 피드백 적용
객체 지향형 계산기를 외운 토대로, 내가 정한 규칙에 따라 알고리즘 연습 문제를 풀이해보고자 한다.
이 두과정으로 종료된다. 변경되는 것은 결국 변수, 연산식이 얼마나 복잡하거나 생각해야 하는 것이지. 기본적으로 프로그램이 돌아가는 구조는 위처럼 고정하여 작업하고 있다. 이 방식의 틀이 외어져서 문제를 보면 일단 기본 구조부터 잡고 연산에 대해서 생각하는 것이 오히려 로직에만 집중 할 수 있어서 빠르게 문제를 해결 할 수 있는 장점이 있었다.
1. 문제 파악 과정
- 필요 데이터 파악
+--- 데이터 타입 확인
- 필요 메서드 파악
+--- 기본 입력부 input(){}
+-- 입력 값 갯수 확인
+-- 데이터 제한조건 파악(유효성검사 while loop)
+--- 기본 계산부 calculate(){}
+-- 필요 연산 확인
+-- 필요 조건 확인
+--- 기본 출력부 output(){}
+-- 출력할 데이터, 내용 확인
+--- 각 메서드 별 파라미터 전달 필요 부분 확인
2. 코드 작성 과정
- Main.java 실행부 생성 , Solution.java 클래스(설계도) 생성
- 클래스 member 구현
+--- 필요 데이터 정리에 따라 변수 선언
+--- 기본 생성자 선언
+--- 필요 메서드 정리에 따른 메서드 선언
+-- input(){}과 관련된 메서드부터 작성, 유효성 체크(진입부 메서드)
+-- calculate(){}의 실제 연산 로직 작성
+-- output(){}의 출력 관련 정리
- 실행부 Main.java에서 객체 인스턴스 생성 및 객체로부터 진입부 메서드 호출
1. Main.java
package Algorithm02; public class Main { public static void main(String[] args) { System.out.println( "[문제]머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다.\n" + "나이 age가 주어질 때,\n" + "2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.\n" + "\n" + "제한사항 0 < age ≤ 120\n" + "나이는 태어난 연도에 1살이며 1년마다 1씩 증가합니다.\n"); Solution solution = new Solution(); solution.inputAge(); } }
2. Solution.java
package Algorithm02; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.Scanner; public class Solution { int age; //입력 나이 //0<age<=120 //0=0+1=1살 int birthYear; //출생 년도 int currentYear; //현재 년도 int result; //계산결과 = ????년생 Scanner sc = new Scanner(System.in); public Solution() { //기본 생성자 } //필요한 함수 //inputAge(){}; 나이 입력 //유효성검사 나이입력 범위 0<age<=120만 허용 //calculate(){}; 나이 계산 = currentYear - (age -1) = birthYear //ex) 2023-(36-1) = //outputBirthYear(){} 계산 결과 알려주기 void inputAge() { while (true) { int age; System.out.println("출생년도를 알고싶은 사람의 나이를 입력하세요"); age = sc.nextInt(); if (age < 0 || age >= 120) { System.out.println("나이는 1~120까지만 입력 할 수 있습니다."); continue; }else { calculate(age); outputBirthYear(result); break; } } } void calculate(int age) { LocalDate now = LocalDate.now(); int currentYear = now.getYear(); result = currentYear - (age-1); } void outputBirthYear(int result) { System.out.println("당신은 "+result+"년생입니다."); } }
'Java & Algorithm > Algorithm Practice' 카테고리의 다른 글
[Algorithm] 입력한 각도의 종류를 설명해주는 계산기 만들기 (0) | 2023.08.01 |
---|---|
[Algorithm] 두 개의 정수가 일치하는지 여부를 알려주는 계산기 만들기 (0) | 2023.08.01 |
[Algorithm✅️] 4칙연산을 해주는 계산기 - 혼자 만들기+ChatGPT의 피드백 적용 (0) | 2023.08.01 |
[Algorithm✅️] 4칙연산을 해주는 계산기 - 혼자 만들기+ChatGPT의 피드백 받기 (0) | 2023.08.01 |
[Algorithm★] 알고리즘이란? 시간 복잡도 Big-O 빅오 표기법 (0) | 2023.07.28 |