[TIL]2025.03.07

기 원·2025년 3월 7일

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; 
    }
}
  1. 다른사람의 개선코드
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 관리 개선
profile
노력하고 있다니까요?

0개의 댓글