/CareFridge

2023-2 알고리즘 <TEAM 4 - 냉장고를 부탁해>

Primary LanguageKotlin

CareFridge

알고리즘 TEAM 4 Term Project

[목차]


프로젝트 개요

header

프로젝트 설명

냉장고에 있는 재료를 바탕으로 메뉴를 추천해 주는 어플

CareFridge 🛠️ 핵심 기능
Logo 1. 재료 추가
- 재료 이름과 유통기한, 양, 선호도를 설정할 수 있습니다.
- 재료는 수정과 삭제도 가능합니다.

2. 저장한 재료 보기
- 현재 냉장고에 있는 재료를 리스트 형태로 시각화해서 보여줍니다.
- 유통기한까지 남은 재료의 디데이도 확인할 수 있습니다.

3. 메뉴 추천
- 냉장고에 있는 재료의 양, 유통기한, 선호도를 고려하여 재료마다 가중치를 계산하고, 가장 높은 점수를 가진 메뉴를 추천해 줍니다.
- 메뉴가 마음에 들지 않는다면 재추천을 받을 수도 있습니다.



알고리즘 소개

사용 알고리즘

Greedy

각 단계에서 현재 상황에서 가장 최적인 선택을 하는 방식으로 문제를 해결하는 알고리즘 각 단계에서 지금 당장 가장 좋아 보이는 선택을 하는 것

  • 간단하고 직관적인 구현이 가능하며, 특정 문제에 대해 전역 최적해를 보장하지는 않지만, 많은 경우에 꽤 효과적으로 동작 </br

그리디 적용
가능한 모든 음식 레시피를 확인하면서 각 음식에 대한 점수를 계산하고, 계산된 점수를 비교하여 현재까지 가장 높은 점수를 가진 음식을 최적의 메뉴로 선택


초기 알고리즘 (Java) vs 프로젝트에 적용한 알고리즘 (Kotlin)

유형 초기 알고리즘 프로젝트에 적용한 알고리즘
프로젝트 동작 구조 1) 사용자에게 선호하는 재료를 입력 받기

2) 각 레시피에 대해 사용자의 선호 재료에 대한 점수를 계산하고 최종 점수를 기반으로 음식을 추천
1) 기본적으로 제공하는 레시피와 사용자가 미리 저장한 재료 리스트를 추천 알고리즘의 인자에 전달

2) 재료의 유통기한, 양, 선호도를 바탕으로 점수를 계산하고 최종 점수를 기반으로 음식을 추천
가중치 부여 조건 - 음식 추천은 사용자가 선호하는 재료가 사용된 레시피에만 가중치를 부여하며, 사용자가 아무런 재료를 입력하지 않을 경우 모든 레시피를 대상으로 추천

- 양과 유통기한을 고려하여 각 재료에 대한 가중치를 계산
- 기본적으로는 양과 유통기한을 고려하여 각 재료에 대한 가중치를 계산

- 추가 가중치는 사용자가 선호하는 재료가 사용된 레시피에만 부여, 사용자가 아무런 재료를 입력하지 않을 경우 모든 레시피를 대상으로 추천

실행 결과


[초기화 부분]
설정한 재료와 해당하는 레시피(음식)

[코드 출력 결과]
선호하는 재료를 입력하지 않았을 때 선호하는 재료를 입력했을 때




[코드 출력 결과]
image image
선호 재료가 없을 때 선호 재료가 있을 때

[화면]

사용자가 미리 설정한 재료 선호 여부 설정 선호 재료가 없을 때 선호 재료가 있을 때



참여 인원

김나현 박하은 신주환 이강현



Git 컨벤션

Commit message 형식

커밋 메세지의 기본 포멧은 아래의 명세를 따릅니다.

:Emoji: <type>: <subject>

<body>

<footer>

Type 및 Emoji 정리

해당 커밋은 무엇에 대한 작업인지 키워드를 통해 표시합니다.

Type Emoji Description
Feat ✨(sparkles) 새로운 기능 추가
Fix 🐛 (bug) 버그 수정
Docs 📝 (memo) 문서 수정
Style 🎨 (art) 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
Refactor ♻️ (recycle) 코드 리팩토링
Test ✅ (white_check_mark) 테스트 코드, 리팩토링 테스트 코드 추가
Chore 🔧 (wrench) 빌드 업무 수정, 패키지 매니저 수정