문제 › 024

024. JSON 데이터 변환기

Medium 바이브코딩
문제 설명
[문제] JSON 데이터를 변환·비교하는 MCP 서버를 구현한다(단순화 버전). 모든 JSON은 문자열로 입력받는다. 중첩(nested) JSON이란 값 안에 또 객체가 들어 있는 구조다. 예: {"a":{"b":1}}은 키 a의 값이 다시 객체 {"b":1}인 2단계 구조다. 이를 점 표기법(dot notation)으로 평탄화하면 키를 점으로 이어 "a.b" 한 단계로 만든다. [구현할 함수] - flatten_json(nested_json: str) -> List[str] 중첩 JSON 문자열을 평탄화해, "키=값" 문자열들의 목록으로 반환한다(키 오름차순). 값은 문자열로 변환해 담는다. 빈 객체 "{}"는 빈 목록 [] 을 반환한다. 예: flatten_json('{"a":{"b":1}}') -> ["a.b=1"] - unflatten_json(flat_keys: str) -> List[str] 점 표기법 키 목록(JSON 배열 문자열)을 받아, 복원될 최상위 키들을 오름차순 목록으로 반환한다. 예: unflatten_json('["a.b","a.c","x"]') -> ["a", "x"] # 최상위 키 a, x 빈 배열 "[]"는 [] 을 반환한다. - json_diff(json1: str, json2: str) -> List[str] 두 JSON 문자열을 비교해 값이 다르거나 한쪽에만 있는 키들을 오름차순 목록으로 반환한다. 차이 없으면 []. 예: json_diff('{"a":1}', '{"a":2}') -> ["a"] [제약] - 입력 JSON은 문자열, 반환은 모두 문자열 목록(List[str])이다. - 모든 결과 목록은 키 오름차순 정렬. [예시] flatten_json('{"a":{"b":1}}') -> ["a.b=1"] unflatten_json('["a.b","a.c","x"]') -> ["a", "x"] json_diff('{"a":1}', '{"a":2}') -> ["a"] flatten_json('{}') -> []
로그인하고 풀기 AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.