문제 › 064

064. 시저 암호

Medium 바이브코딩 MCPCryptoString
문제 설명
[문제] 시저 암호(Caesar cipher) MCP 서버를 구현하시오. 시저 암호는 각 알파벳을 정해진 칸 수만큼 뒤로 밀어 바꾸는 고전 암호이다. 예를 들어 key가 3이면 A는 D, B는 E, ... 가 되고, 끝(Z)을 넘으면 다시 A로 순환한다(Z를 3 밀면 C). 알파벳이 아닌 문자(공백, 숫자, 기호 등)는 그대로 두고, 대문자/소문자는 각자의 케이스를 유지한다. [구현할 함수] - encrypt(text: str, key: int) -> str text의 각 알파벳을 key만큼 뒤로 밀어 암호화한 문자열을 반환한다. 알파벳이 아닌 문자는 그대로 둔다. - decrypt(text: str, key: int) -> str encrypt의 역연산. 각 알파벳을 key만큼 앞으로 밀어 복호화한 문자열을 반환한다. - brute_force(text: str) -> array<string> key를 1부터 25까지 차례로 적용해 복호화한 결과 25개를 배열로 반환한다(배열 인덱스 0이 key=1, 인덱스 24가 key=25). [입력·상태] 상태를 유지하지 않는 순수 변환 함수들이다. 입력은 문자열과 정수 key이다. [제약] - 알파벳은 26글자 안에서 순환한다(밀어서 끝을 넘으면 처음으로). - 대소문자는 변환 후에도 유지된다. - 알파벳이 아닌 문자는 변환하지 않고 그대로 둔다. - brute_force는 key=1..25 순서의 길이 25 배열이다. [힌트] 글자 코드값 계산으로 직접 구현 가능 (Python ord/chr / C++ char 산술 / Java char 산술). 정규식은 불필요하다. [예시] encrypt("HELLO", 3) -> "KHOOR" decrypt("KHOOR", 3) -> "HELLO" brute_force("KHOOR") -> ["JGNNQ", "IFMMP", "HELLO", "GDKKN", ..., "LIPPS"] # 인덱스 0(key=1)="JGNNQ", 인덱스 2(key=3)="HELLO", 인덱스 24(key=25)="LIPPS"
로그인하고 풀기 AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.