음식 추천 AI Jack (개인 프로젝트)
✔ 주제 선정 이유
국비 교육 과정에서 첫 프로젝트를 진행하였다.
우리는 매일 매일 뭐 먹을지 고민한다. 고민을 하다 하루를 굶다 잠들어버리기도 한다. 세상에 맛있는 음식이 정말 많다. 그날 기분에 따라 땡기는 거에 따라 먹고 싶은 음식들이 분 단위로 바뀐다. 이러한 것을 해결해줄 수 있는 것이 있었으면 좋겠다고 생각했다. 그래서 기분에 따라 그날 땡기는 거에 따라 음식을 추천해 주는 프로그램을 짜보았다. 진짜 AI는 아니지만 나름 도움이 되기도 했다.
👨💻 Source Code
Github - Personal-Project_AI-Jack
✔ 기술 스택
JAVA로만 만들어 콘솔 창에 실행시켰다.
✔ 프로젝트 기간
2022년 3월 23일부터 2022년 4월 5일까지 약 2주 동안 개발을 진행하였다.
✔ 구성
Jack(Main), Feeling(기분), Kind(음식 종류)로 3개의 Class로 이루어져 있다.
✔ 프로젝트 설명
코드는 국비 교육 과정에서 배운 내용을 토대로 작성했다.
JACK CLASS
01. equalsIgnoreCase()
- equals()와 같이 문자열을 비교할 때 사용
: equals()는 대소문자를 구분해야 하지만 equalsIgnoreCase()는 대소문자를 구분하지 않아도 되기 때문에 이것을 사용하였다.
02. indexOf()

- indexOf()의 특정 문자 위치 조회를 활용하여 특정 문자를 출력할 수 있도록 하였다.
FEELING CLASS
01. Keywords

- 실제 AI와 대화하듯 티키타카가 이루어졌으면 했다. 그래서 질문과 대답의 키워드를 미리 입력해두었다. 질문이나 대답 입력 시, 저장된 키워드가 포함되어있는 것을 확인하고 다음 코드로 넘어 갈수 있게 코드 작성을 하였다.
- 추후 키워드 추가 및 삭제 같은 유지보수가 용이하게 하기 위해 배열을
이용하여 데이터를 저장하였다.
02. Random( )

- Random( ) 함수를 이용해 배열 값들을 랜덤으로 출력하도록 하였다.
KIND CLASS
01. Contains( )

- indexOf() 대신 사용했던 이유
: 특정 문자열을 더 간단하게 취할 수 있어 사용했다.
- equals() 대신 사용했던 이유
: 아이폰의 Siri와 대화하는 것처럼 하고 싶었다.
equals()는 입력 시, 지정한 문자열과 정확하게 일치해야 되기 때문에 contains()를 사용하여 지정 문자열만 포함되면 자유롭게 문장 구성을 할 수 있게 하였다.
✔ 시연 영상
-
음식 종류 편

-
기분 편

💬 프로젝트 후기
코딩을 배우고 첫 프로젝트였다. 내가 코딩한대로 구현이 되니 말할 수 없는 성취감을 느꼈다. 역시 이 맛에 무언가를 만드는 것 같다.
java를 공부하면서 부족한 부분이 많았는데 일부분은 프로젝트 하면서 공부가 되었고 또 일부분은 아직 부족한 상태이다. 그래도 프로젝트를 통해 내가 어떤 부분이 부족한지를 알게 되었으니 앞으로 채워나갈 것이다.