본문 바로가기

java

[Java] 도전 과제 Lv_1 키오스크 요구사항⬜ 바구니 생성 및 관리 기능⬜ 사용자가 선택한 메뉴를 장바구니에 추가할 수 있는 기능을 제공합니다.⬜ 장바구니는 메뉴명, 수량, 가격 정보를 저장하며, 항목을 동적으로 추가 및 조회할 수 있어야 합니다.⬜ 사용자가 잘못된 선택을 했을 경우 예외를 처리합니다(예: 유효하지 않은 메뉴 번호 입력) ⬜ 장바구니 출력 및 금액 계산⬜ 사용자가 결제를 시도하기 전에, 장바구니에 담긴 모든 메뉴와 총 금액을 출력합니다.⬜ 출력 예시⬜ 각 메뉴의 이름, 가격, 수량⬜ 총 금액 합계 ⬜ 장바구니 담기 기능⬜ 메뉴를 클릭하면 장바구니에 추가할 지 물어보고, 입력값에 따라 “추가”, “취소” 처리합니다.⬜ 장바구니에 담은 목록을 출력합니다. ⬜ 주문 기능⬜ 장바구니에 담긴 모든 항목을 출력합니다.⬜ 합산하여 총 .. 더보기
Lv_1 : 약수의 합 문제 내 풀이class Solution { public int solution(int num) { int sum = 0; // 약수 : 어떤 수를 나누어 떨어지게 하는 수 // 1~절반 for(int i=1; i완전 탐색 (Brute-force) 방식 : 모든 가능성을 다 시도해보는 완전 탐색이다. num/2 : 불필요한 탐색의 범위를 줄여, 반복이 줄어들어 효율적이다. (그나마 효율적인 것이지 수가 커지면 비효율적이다.) num / 2 예시// 불필요한 반복을 줄임1, 2, 3, 4, 6, 1212/2 = 6 → 1~6만 확인하면 된다.7, 8, 9, 10, 11은 12를 나눌 수 없다. → 검사할 필요가 없다. # 다른 풀.. 더보기
[Java] Lv_4 & 5 키오스크 문제 요구사항⬜ Menu 클래스 생성하기⬜ 설명 : MenuItem 클래스를 관리하는 클래스입니다. 예를 들어, 버거 메뉴, 음료 메뉴 등 각 카테고리 내에 여러 MenuItem을 포함합니다.⬜ List 은 Kiosk 클래스가 관리하기에 적절하지 않으므로 Menu 클래스가 관리하도록 변경합니다.⬜ 여러 버거들을 포함하는 상위 개념 ‘버거’ 같은 카테고리 이름 필드를 갖습니다.⬜ 메뉴 카테고리 이름을 반환하는 메서드가 구현되어야 합니다.⬜ MenuItem, Menu 그리고 Kiosk 클래스의 필드에 직접 접근하지 못하도록 설정합니다.⬜ Getter와 Setter 메서드를 사용해 데이터를 관리합니다.Lv4 & 5를 구현하면 터미널에 이렇게 보여집니다.[ MAIN MENU ]1. Burgers2. Drinks3. .. 더보기
[Java] Lv_3 키오스크 요구사항⬜ 요구사항이 가지는 의도⬜ 객체 지향 개념을 학습하고, 데이터를 구조적으로 관리하며 프로그램을 설계하는 방법을 익힙니다.⬜ main 함수에서 관리하던 전체 순서 제어를 Kiosk 클래스를 통해 관리합니다. ⬜ Kiosk 클래스 생성하기 ⬜ 설명: 키오스크 프로그램의 메뉴를 관리하고 사용자 입력을 처리하는 클래스입니다.⬜ MenuItem을 관리하는 리스트가 필드로 존재합니다.⬜ main 함수에서 관리하던 입력과 반복문 로직은 이제 start 함수를 만들어 관리합니다.⬜ List menuItems 는 Kiosk 클래스 생성자를 통해 값을 할당합니다.⬜ Kiosk 객체를 생성하고 사용하는 main 함수에서 객체를 생성할 때 값을 넘겨줍니다.⬜ 요구사항에 부합하는지 검토⬜ 키오스크 프로그램을 시작하는 .. 더보기
[Java] Lv_2 키오스크 요구사항⬜ 요구사항이 가지는 의도⬜ 객체 지향 개념을 학습하고, 데이터를 구조적으로 관리하며 프로그램을 설계하는 방법을 익힙니다.⬜ 햄버거 메뉴를 MenuItem 클래스와 List를 통해 관리합니다. ⬜ MenuItem 클래스 생성하기⬜ 설명 : 개별 음식 항목을 관리하는 클래스입니다. 현재는 햄버거만 관리합니다.⬜ 클래스는 이름, 가격, 설명 필드를 갖습니다.⬜ main 함수에서 MenuItem 클래스를 활용하여 햄버거 메뉴를 출력합니다.⬜ MenuItem 객체 생성을 통해 이름, 가격, 설명을 세팅합니다.⬜ 키워드: new⬜ List를 선언하여 여러 MenuItem을 추가합니다.⬜ List menuItems = new ArrayList();⬜ 반복문을 활용해 menuItems를 탐색하면서 하나씩 접근.. 더보기
[Java] Lv_1 키오스크 요구사항⬜ 요구사항이 가지는 의도⬜ 입력 처리와 간단한 흐름 제어를 복습합니다. (프로그래밍 검증**)**⬜ Scanner 활용법, 조건문, 반복문을 재확인하며 입력 데이터를 처리하는 방법 강화 ⬜ 햄버거 메뉴 출력 및 선택하기⬜ Scanner를 사용하여 여러 햄버거 메뉴를 출력합니다.⬜ 제시된 메뉴 중 입력받은 숫자에 따라 다른 로직을 실행하는 코드를 작성합니다.⬜ 반복문을 이용해서 특정 번호가 입력되면 프로그램을 종료합니다. ⬜ Lv1을 구현하면 터미널에 이렇게 보여집니다.[ SHAKESHACK MENU ]1. ShackBurger | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거2. SmokeShack | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거3. Chees.. 더보기
[Java] 예외 처리 목차예외처리가 필요한 이유예외처리예외 기본 규칙체크 예외 vs 언체크 예외(런타임 예외)체크 예외 처리언체크 예외 처리finally 블록 예외처리가 필요한 이유프로그램이 비정상 종료되는 것을 방지한다.사용자에게 친절한 오류 메시지를 제공한다.자원 낭비를 방지한다. (열린 파일, 네트워크 연결 등)오류 추적 용이하다. (로그 기록) 예외처리프로그램 실행 중에 발생하는 오류 상황을 예외(Exception) 처리하기 위한 방법이다. 키워드키워드설명try예외가 발생할 수 있는 코드를 작성하는 블록이다.catch예외를 잡아서 처리하는 블록이다.finally예외 발생 여부와 관계없이 실행하는 블록이다.throw새로운 예외를 발생시킨다.throws발생시킨 예외를 메서드 밖으로 던진다. 예외 계층 그림Throw.. 더보기
[Java] Lv_3 계산기 문제 요구 사항⬜ 현재 사칙연산 계산기는 (➕,➖,✖️,➗) 이렇게 총 4가지 연산 타입으로 구성되어 있습니다.⬜ Enum 타입을 활용하여 연산자 타입에 대한 정보를 관리하고 이를 사칙연산 계산기 ArithmeticCalculator 클래스에 활용 해봅니다. ⬜ 실수, 즉 double 타입의 값을 전달 받아도 연산이 수행하도록 만들기⬜ 키워드 : 제네릭⬜ 단순히, 기존의 Int 타입을 double 타입으로 바꾸는 게 아닌 점에 주의하세요!⬜ 지금까지는 ArithmeticCalculator, 즉 사칙연산 계산기는 양의 정수(0 포함)를 매개변수로 전달받아 연산을 수행⬜ 피연산자를 여러 타입으로 받을 수 있도록 기능을 확장⬜ ArithmeticCalculator 클래스의 연산 메서드(calculate)⬜ .. 더보기