TIL

[TIL]Kiosk 프로젝트 구조 정리

높하늬바람 2025. 5. 14. 09:45

TIL - 2025.03.07

오늘 배운 것 개요

Java 기반의 Kiosk 프로젝트 구조를 정리하고, 메인 메뉴에서 각 Lv 실행 후 다시 돌아오는 방식을 구현
LvX.Main에서 0 입력 시 src.Main으로 복귀하도록 수정, run() 메서드를 사용하여 객체지향적인 실행 흐름을 유지

프로그래머스 알고리즘 풀이


1. Kiosk 프로젝트

1. Lv1 ~ 3 구현

세부 내용

  • LvX.Main.main(args); 직접 호출을 제거하고, new LvX.Main().run(); 형태로 변경
  • 0 입력 시 프로그램 종료
  • Scanner를 한 번만 닫도록 수정

2. 뒤로가기 구현

세부 내용

  • 0입력 시 src.Main으로 복귀하도록 return 처리

2. 알고리즘 학습

1. 가운데 글자 가져오기

  1. 작성 코드
    class Solution {
     public String solution(String s) {
         int val = s.length();
         int cut = val / 2;
         String answer = "";
         if(val % 2 != 0){
             answer = String.valueOf(s.charAt(cut));
         } else {
             answer = s.substring(cut-1, cut+1);
         }
         return answer; 
     }
    }
  2. 다른사람의 개선코드
    class Solution {
     public String solution(String s) {
         return s.substring((s.length() - 1) / 2, word.length() / 2 + 1);
     }
    • substring(a, b) => a이상 b미만이라는 것을 활용해서 획기적으로 양을 줄인 코드

3. 느낀 점 & 추가 학습

객체 지향적인 실행 흐름 유지

  • main()을 직접 호출하는 방식은 유지보수에 불리
  • new LvX.Main().run();과 같은 객체 생성 후 실행하는 방식 적절

메서드 흐름을 이해하는 것이 중요

  • 0 입력 시 프로그램이 종료되지 않고 return;을 통해 src.Main으로 돌아갈 수 있도록 흐름을 조정.

알고리즘 풀이를 할때 한번더 생각해볼것

  • substring(a, b) => a이상 b미만이라는 것을 알고 있었음에도 똑바로 활용하지 못한점
  • 한번더 생각해 봤으면 더 좋은 코딩을 할 수 있었을 것인데 간단한 문제라고 생각하고 빨리넘긴것이 패착

추가로 학습할 것

  • Scanner 객체를 전역적으로 관리하는 방법 (static Scanner)
  • Factory Pattern을 활용한 동적 Lv 실행
  • enum을 활용한 Lv 관리 개선

'TIL' 카테고리의 다른 글

[TIL]예외 처리 개선  (0) 2025.05.14
[TIL]객체 지향 원칙과 코드 리팩토  (0) 2025.05.14
[TIL]REST API를 활용한 GitHub 레포지토리 목록 조회  (0) 2025.05.14
[TIL]연산자 처리  (0) 2025.05.14
[TIL]Queue  (0) 2025.05.13