202. 난독화 텍스트 복원기
Medium
바이브코딩
Vibe ContestVibe DaconMCPNLPText Processing
문제 설명
[문제]
난독화된 한글 텍스트를 원래 텍스트로 되돌리는 MCP 서버를 구현한다(단순화 버전). 난독화란 글자를 자모로 쪼개거나 비슷한 모양 글자로 바꿔 검색/필터를 피하려는 변형을 말한다. 예를 들어 "정말"을 "ㅈㅓㅇㅁㅏㄹ"처럼 자모로 분리해 적는다.
이 서버는 다음 내장 사전(난독화 표기 -> 원본)을 사용한다:
"ㅈㅓㅇㅁㅏㄹ" -> "정말"
"ㅂㅏㄹ" -> "별"
"조ㅎ아요" -> "좋아요"
"ㄴㅏ" -> "나"
사전의 키(왼쪽 난독화 표기)들을 "패턴"이라 부른다. 서버 인스턴스 안에 통계(stats)를 유지하며, 해당 메소드를 호출할 때마다 카운터를 1씩 올린다.
[구현할 함수]
- analyze_obfuscation(text: str) -> int
텍스트 안에 사전의 패턴(키)이 몇 번 등장하는지 그 횟수를 반환한다.
- restore_text(text: str) -> str
사전을 기반으로 패턴을 원본으로 단순 치환한 복원 텍스트를 반환한다.
- detect_patterns(text: str) -> List[str]
텍스트에서 발견된 난독화 패턴들을 등장 순서대로 배열로 반환한다. 하나도 없으면 빈 배열 [] 을 반환한다.
- get_stats() -> List[int]
[복원(restore_text) 호출 횟수, 패턴 감지(detect_patterns) 호출 횟수] 정수 배열을 반환한다. 초기값은 [0, 0].
[입력/상태]
서버는 위 내장 사전과 호출 통계(stats)를 유지한다.
[제약]
- 패턴이 전혀 없는 텍스트는 analyze_obfuscation 0, detect_patterns [] 를 반환한다.
- get_stats 초기값은 [0, 0].
[힌트] 문자열 안에서 특정 부분 문자열을 찾고 바꾸는 작업이다. 정규식 또는 단순 문자열 검색/치환을 쓰면 된다(Python: re/str.replace, C++: <regex>/std::string, Java: java.util.regex/String).
[예시] (각 예시는 초기 빈 상태에서 시작)
analyze_obfuscation("ㅈㅓㅇㅁㅏㄹ 별로") -> 1
restore_text("ㅈㅓㅇㅁㅏㄹ 별로") -> "정말 별로"
detect_patterns("ㅈㅓㅇㅁㅏㄹ 조ㅎ아요") -> ["ㅈㅓㅇㅁㅏㄹ", "조ㅎ아요"]
detect_patterns("없는단어") -> []
get_stats() -> [0, 0] # 호출 전
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.