문제 › 036

036. 간단한 데이터베이스

Hard 바이브코딩 MCPDatabaseCRUD
문제 설명
[문제] 메모리 안에서만 동작하는 아주 단순한 관계형 데이터베이스 MCP 서버를 구현한다. 테이블을 만들고, 행(레코드)을 넣고, 조건에 맞는 행을 세거나 지운다. 각 테이블은 필드 목록(열 이름들)과 행 목록을 가진다. 행 하나는 "필드명 -> 값" 형태의 묶음이다. 조건(condition)은 "필드명 -> 값"들의 묶음이며, 조건에 적힌 모든 필드가 행의 값과 일치할 때 그 행이 매칭된다. 빈 조건은 모든 행에 매칭된다. [구현할 함수] - create_table(table_name: str, fields: List[str]) -> bool 주어진 필드 목록으로 테이블을 생성한다. 성공하면 참(True)을 반환한다. - insert_row(table_name: str, row_data: dict) -> bool 해당 테이블에 행을 삽입한다. 성공하면 참(True), 테이블이 없으면 거짓(False)을 반환한다. - select_rows(table_name: str, condition: dict) -> int 조건에 매칭되는 행의 개수를 반환한다. 테이블이 없으면 -1 을 반환한다. - delete_rows(table_name: str, condition: dict) -> int 조건에 매칭되는 행을 삭제하고, 삭제한 행의 개수를 반환한다. 테이블이 없으면 0 을 반환한다. [입력·상태] 서버 인스턴스 내부에 "테이블 이름 -> { 필드 목록, 행 목록 }" 구조의 데이터를 유지한다. condition 은 "필드명 -> 값" 묶음(키-값 맵)이다. 초기 상태는 테이블이 하나도 없는 빈 상태다. [제약] - condition 에 적힌 모든 필드가 일치해야 매칭이다(부분 일치 아님). - 빈 condition({}) 은 해당 테이블의 모든 행에 매칭된다. - 없는 테이블 조회 시 select_rows 는 -1, delete_rows 는 0 을 반환한다. [예시] (각각 초기 빈 상태) create_table("users", ["id", "name", "age"]) -> True insert_row("없는테이블", {"id": 1}) -> False # 테이블 없음 select_rows("없는테이블", {}) -> -1 # 테이블 없음 delete_rows("없는테이블", {}) -> 0 # 테이블 없음 # 테이블 생성 후 age=30 행 1개를 넣고 조회/삭제하면 select_rows("users", {"age": 30}) -> 1 delete_rows("users", {"age": 30}) -> 1
로그인하고 풀기 AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.