[TIL] 14일차 _ 키오스크 프로젝트 #2

Seoyeon Lee·2025년 10월 23일

Today I Learned ...

오늘은 코드카타 알고리즘 7~9번 문제와 SQL 11번 문제를 풀고, 키오스크 프로젝트의 Lv.4를 완성했다.


🗒️ 코드카타 #7

오늘 진행한 SQL 문제order by를 통해 여러 기준으로 데이터를 정렬하는 것이다.
order by는 여러 기준 조건을 처리할 수 있는데, 먼저 입력된 조건을 최우선으로, 중복된 데이터가 있는 경우에는 그 다음 기준으로 정렬한다.

그리고 오늘은 총 3개의 알고리즘 문제를 풀었다.
그 중 2개의 문제가 잘 해결되지 않았는데,
첫 번째 문제는 두 개의 int를 제공받을 때, 나눗셈을 진행하고 그 결과에 1,000을 곱한 값을 출력하는 것이었다.
나는 int끼리 나눗셈을 진행해도 그 결과는 double로 남아있을 것이라고 생각하여 숫자를 int 그대로 두고 나눗셈을 진행했는데, 제대로된 결과가 나타나지 않았다.
두 수를 double로 바꾸고, double로 결과를 반환받은 뒤, 그 결과를 int로 변경하여 return 해주어야 했다.

그리고 잘 해결되지 않았던 두 번째 문제는 제한된 범위의 수를 받으면, 그 수 이하의 짝수를 모두 더한 값을 반환해주는 것이었다.
나는 for문을 사용해 짝수의 값을 더해줬는데, 이 for문을 if문 안에 집어넣을 때 실행이 되지 않는다는 문제가 있었다.
그 이유는 내가 for문에서 값을 return 해주는 바람에 for문이 끝까지 진행되지 않고 종료되어버린 것이다.

public int solution(int n) {
	int answer = 0;
	if (n > 0 && n <= 1000) {
		for (int i=2; i <= n; i+=2) {
            answer += i;
        }
	}
	return answer;
}

반환자료형이 있는 메서드의 경우, 반드시 반환값이 존재해야 한다.
그래서 결국 위와 같이 return을 if문 밖에서 진행해줘야 한다.
이 문제는 스트림을 사용해서도 풀 수 있다.

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


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

오늘은 키오스크 프로젝트의 Lv.4를 진행했다!

Lv.4의 요구사항은 MenuItem 클래스를 관리하는 Menu 클래스를 생성하는 것이다.
기존에는 Kiosk 클래스에서 MenuItem을 담는 리스트 컬렉션을 관리하였는데, 이 내용을 Menu 클래스로 옮겨왔다.

기존에 Kiosk에서 관리할 때는 MenuItem 리스트 생성을 Kiosk 클래스 안에서 했기 때문에 Kiosk의 start() 메서드를 실행할 때 아무런 문제 없이 리스트를 사용할 수 있었다.
그런데 이걸 두 개의 클래스로 나눠서 진행을 하려니... 정말 머리가 터지는 줄 알았다.
그래도 결국 start() 메서드에 매개변수로 Menu를 전달하는 등의 시도를 통해서 1개의 Menu 객체를 Kiosk에서 사용하는 것에 성공했다.

그런데 문제에서는 3개의 Menu 카테고리를 만들어서 각각의 카테고리에 메뉴를 담으라고 했다.
그래서 일단 start() 메서드에 매개변수로 Menu의 리스트를 넣었고, 그 이후로 while문과 if문을 반복해 각각의 경우의 수 별로 실행할 내용들을 작성해주었다.
이렇게 하니 작동은 되었지만, 너무 너무 보기 싫게 생겼었다.

그래서 결국 카테고리를 출력하고, 카테고리 내의 메뉴를 출력하고, 숫자를 입력받은 뒤 예외 상황을 처리하는 것을 각각 다른 메서드로 만들었고,
그 메서드들을 start() 메서드 안에서 사용했다.
그랬더니 그래도 나름 보기 편한 결과가 만들어졌다.

카테고리를 선택하면 그 속의 메뉴들이 출력되는데, 출력되는 속도가 너무 빨라서 정신이 사납다.
여기에 딜레이를 걸어주고 싶은데, 어떻게 해야하는지 아직 잘 모르겠다.
이건 내일 해봐야겠다ㅎ

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


🙃 오늘의 느낀점

제발 행동하고 생각하지 말고, 생각하고 행동하자...
물론 생각한대로 구현할 능력은 아직 없지만... 적어도 쓸데없는 데에 시간낭비를 하지 않도록 해봐야겠다...
그래도 지난주의 나보다는 매우 많이 똑똑해졌으니 만족한다.

과제를 하면 할수록 어렵긴 하지만 재미있다.
언젠가 어려움이 재미보다 많이 커질수도 있겠지만... 지금은 재미있는걸 누려야겠다ㅎ

profile
백엔드 개발자 지망생

0개의 댓글