에니그마

면접 대비

시간 제한1초메모리 제한256 MB

요약
두 로터가 글자마다 함께 회전하는 단순화한 에니그마를 구현하고, 로터 설정 CHICKENS로 주어진 대문자 암호문을 복호화한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 구현, 문자열, 수학
정답자
아직 제출이 없습니다

문제

골동품집을 운영하는 정상이는 어느 날 치킨이 너무 먹고 싶은 나머지, 아버지가 장기 해외 출장을 나간 사이 아버지가 아끼는 에니그마 장치를 팔아넘기고 치킨을 사 먹었다. 그런데 아버지가 해외에서 독일 비밀단체의 비밀 암호문을 찾아 그 내용을 해독하라고 메일을 보내셨다. 정상이는 돈이 없어 에니그마 장치를 되찾아오지 못하는 상황이므로 프로그래밍으로 에니그마 장치를 구현하려 한다. 아버지가 보낸 에니그마 암호를 해독하여라.

암호문의 톱니값은 "CHICKENS"이며, 암호문은 100자 이내의 알파벳 대문자로 이루어져 있다.

에니그마는 다음과 같은 원리로 작동한다.

  • A부터 Z까지 알파벳이 적힌 톱니가 있다.
  • 톱니의 초기값을 CE로 주었을 때, 알파벳 AB를 입력하면
  1. 첫 번째 톱니는 C로 시작하는 톱니이고, 주어진 A는 알파벳의 첫 번째 글자이므로 첫 번째 톱니의 첫 번째 값 C가 반환된다.
  2. 두 번째 톱니는 E로 시작하는 톱니이고, 주어진 C는 알파벳의 세 번째 글자이므로 두 번째 톱니의 세 번째 값 G가 반환된다.
  3. 마지막 톱니의 반환값인 G가 반환된 뒤 첫 번째 문자에 대한 변환이 종료되어 톱니값이 DE로 바뀐다.
  4. 두 번째 알파벳 B에 대해서 첫 번째 톱니는 D로 시작하는 톱니이고, 주어진 B는 알파벳의 두 번째 글자이므로 첫 번째 톱니의 두 번째 값 E가 반환된다.
  5. 두 번째 톱니는 E로 시작하는 톱니이고, 주어진 E는 알파벳의 다섯 번째 글자이므로 두 번째 톱니의 다섯 번째 값 I가 반환된다.
  6. 마지막 톱니의 반환값인 I가 반환된 뒤 두 번째 문자에 대한 변환이 종료되어 톱니값이 EE로 바뀐다.

이를 그림으로 나타내면 다음과 같다.

입력

첫째 줄에 알파벳 대문자로 이루어진 암호 문자열이 주어진다. 암호 문자열의 길이는 100 이하이다.

출력

첫째 줄에 복호화된 문자열을 출력한다.

예제1

  1. 예제 1

    입력
    KVZEOAQZITQLPHJNFKOIIP
    
    예상 출력
    WINTERISCOMINGJOHNSNOW