10. 간단 계산기
Easy
바이브코딩
문제 설명
[문제]
산술 표현식 문자열을 받아 계산 결과를 돌려주는 MCP(Model Context Protocol, AI가 호출하는 함수 모음) 서버를 구현하세요. 산술 표현식이란 "2+3", "(10+5)*2" 처럼 숫자와 연산자로 이루어진 수식 문자열입니다.
[구현할 함수]
- calculate(expression: str) -> float
산술 표현식 문자열을 받아 계산 결과를 실수(float)로 반환한다. 0으로 나누는 경우처럼 계산할 수 없으면 nan 등 적절한 대체값을 반환한다.
[입력·상태]
- expression: 숫자, 사칙연산자(+ - * /), 괄호 ( ), 소수점으로만 이루어진 수식 문자열.
- 사칙연산 우선순위(곱셈·나눗셈이 덧셈·뺄셈보다 먼저)와 괄호를 지켜 계산한다.
[제약]
- 보안상 코드 평가 기능(Python eval/exec/ast, 그에 준하는 타 언어 기능)은 사용 금지. 허용 문자만 통과시킨 뒤 직접 파싱해 계산한다.
- 결과는 소수를 포함할 수 있다.
- [힌트] 우선순위와 괄호는 재귀 하강 파서(expr -> term -> factor 순)로 처리할 수 있다.
[예시]
calculate("2+3") -> 5
calculate("(10+5)*2") -> 30
calculate("7.5*2.5") -> 18.75
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.