문제 › 092

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