문제 › 071

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가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.