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