092. 미니 스프레드시트
Hard
바이브코딩
MCPSpreadsheetSystem
문제 설명
[문제]
아주 단순한 스프레드시트 MCP 서버를 구현한다.
스프레드시트는 "A1", "B2"처럼 이름이 붙은 칸(셀)에 값을 적어 두는 표다. 서버는 셀 주소 → 값을 보관한다. 셀에 값을 적고, 읽고, 수식을 계산하고, 특정 범위의 셀들을 가져올 수 있다.
수식(formula)은 "=A1+B1"처럼 "="로 시작하는 식이다. 계산할 때 식 안의 셀 참조(예: A1)를 그 셀의 현재 값으로 바꿔치기한 뒤 산술식을 계산한다. 계산에 실패하면 0을 반환한다.
[구현할 함수]
- set_cell(cell: str, value: str) -> int
cell에 value를 저장한다. 저장 후 값이 들어 있는 전체 셀 수를 반환한다.
- get_cell(cell: str) -> str
cell의 값을 반환한다. 비어 있으면 빈 문자열 ""을 반환한다.
- evaluate_formula(formula: str) -> number
"="로 시작하는 수식을 계산한 결과(숫자)를 반환한다. 식 안의 셀 참조는 해당 셀의 현재 값으로 치환한 뒤 산술 계산한다. 계산에 실패하면 0을 반환한다.
- get_range(start: str, end: str) -> array<string>
start부터 end 사이에 해당하는 셀들의 배열을 사전순으로 정렬해 반환한다. 해당 셀이 없으면 빈 배열 []을 반환한다.
[입력·상태]
서버는 셀 주소→값 저장소를 유지한다. 초기에는 비어 있다.
[제약]
- 셀 주소와 값은 문자열이다.
- evaluate_formula는 식 앞의 "="를 제거하고, 셀 참조를 get_cell 값으로 치환한 뒤 산술식을 평가한다.
- [힌트] 문자열 산술식 계산이 필요하다. 안전한 식 평가 기능을 쓴다(Python: 토큰 파싱 또는 ast.literal_eval 기반 / C++: 간단 파서 / Java: ScriptEngine 또는 간단 파서).
[예시] (각 예시는 초기 빈 상태에서 시작)
set_cell("A1", "5") -> 1
get_cell("A1") -> "5"
get_cell("없음") -> ""
evaluate_formula("=1+2") -> 3
get_range("A1", "A3") -> [] # 해당 셀 없음
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.