071. 영양소 계산기
Medium
바이브코딩
MCPHealthCalculator
문제 설명
[문제]
영양소 계산기 MCP 서버를 구현하시오.
음식별 영양소 정보를 등록해 두고, 무엇을 얼마나 먹었는지 기록한 뒤, 하루 총 섭취 칼로리를 합산한다. 영양소 정보는 칼로리, 단백질 등 여러 항목을 담을 수 있지만 이 문제의 채점은 칼로리(calories)만 본다.
[구현할 함수]
- add_food(food_name: str, nutrition_info: dict) -> int
음식 food_name과 그 영양소 정보(객체)를 등록한다. nutrition_info는 "calories" 키를 포함한 키-값 객체이다(예: {"calories": 52, "protein": 0.3}). 등록 후 전체 음식 수를 반환한다.
- get_nutrition(food_name: str) -> number
등록된 음식의 칼로리(1인분 기준)를 반환한다. 등록되지 않은 음식이면 -1을 반환한다.
- record_intake(food_name: str, quantity: float) -> bool
음식 food_name을 quantity인분만큼 섭취 기록에 추가한다. 등록된 음식이면 True, 없으면 False를 반환한다.
- get_daily_summary() -> number
지금까지 기록된 섭취량 전체의 총 칼로리를 반환한다(각 음식 칼로리 x 섭취 인분의 합). 기록이 없으면 0이다.
[입력·상태]
서버는 음식 이름 -> 영양소 정보 사전과, 섭취 기록을 상태로 유지한다. 초기 상태는 둘 다 비어 있다.
[제약]
- 영양소 정보는 키-값 객체이며 채점은 "calories" 항목만 사용한다.
- 없는 음식의 get_nutrition은 -1, record_intake는 False이다.
- 섭취 기록이 없으면 get_daily_summary는 0이다.
[힌트] nutrition_info는 키-값 객체로 받는다 (Python dict / C++ map 또는 JSON / Java Map 또는 JSON).
[예시]
add_food("사과", {"calories": 52}) -> 1
add_food("사과", {"calories": 52}); get_nutrition("사과") -> 52
add_food("사과", {"calories": 52}); record_intake("사과", 2) -> True
add_food("사과", {"calories": 52}); record_intake("사과", 1); get_daily_summary() -> 52
get_nutrition("없음") -> -1 # 미등록 음식 (경계)
record_intake("없음", 1) -> False # 미등록 음식 (경계)
get_daily_summary() -> 0 # 기록 없음 (경계)
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.