[TIL] 18일차 _ 키오스크 프로젝트 #6

Seoyeon Lee·2025년 10월 29일

Today I Learned ...

오늘은 코드카타 SQL 17~20번 문제와 알고리즘 17번 문제를 풀고, 키오스크 프로젝트의 Lv.7을 진행했다.


🗒️ 코드카타 #11

오늘은 총 4개의 SQL 문제를 풀었는데, date_format을 활용해 날짜의 형태를 변환하고, 최댓값을 가지는 데이터를 출력하는 등의 문제였다.
여태까지 최댓값을 출력할 때는 limit 1을 걸어서 사용했는데, 이건 최댓값을 가진 데이터가 2개일 때는 사용할 수 없게 된다.
그래서 오늘은 새롭게 where price = (select max(price) from food_product)을 사용해서 풀어보았다.

오늘 진행한 알고리즘 문제는 자연수를 받으면, 각 자릿수를 뒤집어서 배열로 만드는 것이었다.
자연수의 각 자릿수를 배열로 만드는 것은 어제의 문제를 통해 해봤기에 어렵지 않았다.
문제는 배열을 뒤집는 것인데, 일단은 for문을 사용해 새로운 배열을 만들며 해결할 수 있었다.

Stream을 통해 해결을 시도해보기도 했다.
먼저, 순서를 뒤집을 수 있는 Collections.reverse()를 사용하기 위해 각 자릿수를 만든 배열을 리스트로 받는다.
그리고, Collections.reverse()를 활용해 리스트의 순서를 뒤집고, String을 Integer로 변환하며 리스트를 배열로 반환한다.
어찌저찌 검색을 통해 여기까지 해결을 했었다..
그런데 문제는 내가 보기엔 문제가 없는데 이게 제대로 실행되지 않는다는 것이다.
그 이유는 List.of로 만들어진 리스트가 불변 리스트이기에 리스트의 요소 순서를 바꿀 수 없었던 것이다.
그래서 List.of로 바꾼 리스트를 ArrayList로 받아서 이 문제를 해결할 수 있었다.

이 정도면 충분할 것이라 생각했지만...! 다른 사람들의 풀이를 보니 또 다른 방법들이 너무나도 많이 존재한다...
하지만 아무리 봐도 이해되지 않아 오늘은 여기까지만 하려고 한다...

각각의 문제와 풀이는 깃허브를 통해 업로드해두었다.
GitHub 보러가기


🖥️ 키오스크 프로젝트 #6

오늘은 어제 해결하지 못했던 Lv.7의 Stream을 활용해 장바구니에서 메뉴 삭제하기를 진행했다.
분명히 어제는 안 됐었는데... 오늘 똑같이 시도를 했는데 해결이 잘 되었다...(왜지?)
중간에 내가 !를 붙여놓은걸 까먹어서 뻘짓을 하긴 했지만... 그래도 이건 어찌저찌 잘 해결했다.
사실 스캐너가 잘 동작이 안되는 부분이 있어서 내일 다시 손보긴 해야한다.

문제는 어제 Stream를 활용해 Menu 내의 MenuItem 조회하기를 진행했었는데,
그게 제대로 작동하지 않고 있다는 것이다.
난 분명 4개의 MenuItem을 넣어두었는데, 이게 3번까지만 출력이 된다...
디버깅을 해봤지만... 아직 왜인지 모르겠다.
내일 코드 비쥬얼라이저로 왜 그렇게 작동되는지 보고 해결을 해봐야겠다.

여태까지는 Kiosk 클래스의 start() 안에 이것저것 다 때려넣어서 너무 길어서 보기 좋지 않았는데,
오늘 이것들을 다 기능별 메서드로 나눠두었다.
그러다 이상하게 작동하기도 했지만...! 그래도 지금은 처음보단 훨씬 보기 좋은 것 같다.

이제 내일이면 키오스크 프로젝트가 마무리되는데, 1주일 만에 여기까지 해냈다는게 뿌듯하다.
내일 잘 마무리지어야겠다.

내가 작성한 코드는 깃허브에 업로드해두었다.
GitHub 보러가기


🙃 오늘의 느낀점

오늘 예상 외로 코드카타에 많은 시간을 쓰기도 했고, 컨디션 난조로 집중력이 흐트러져 딴짓도 많이 했다...
원래 오늘 계산기 프로젝트의 트러블슈팅도 진행하려고 했지만 실패했다.

오늘 키오스크에 이것저것 건드리다보니 내일 또 손봐야할 것들이 생겼지만...
내일도 시간이 많으니 내일 다시 열심히 해봐야겠다.

profile
백엔드 개발자 지망생

0개의 댓글