문제1734--에니그마

1734: 에니그마

[만든사람 : 31027 정종은]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

문제 설명

1940년대 제2차 세계대전 시기, 독일군은 애니그마(Enigma)라는 암호 기계를 통해 비밀 메시지를 주고받고 있었습니다. 애니그마는 매일 다른 설정을 사용해 메시지를 암호화하였고, 이는 영국군에게 큰 어려움이 되었습니다. 앨런 튜링(Alan Turing)과 그의 암호 해독팀은 이를 해독하기 위해 복잡한 계산과 기계적 방법을 동원해왔습니다.

 

당신은 이 암호 해독팀의 일원으로서, 주어진 날짜를 기반으로 암호화된 독일군의 메시지를 복호화해야 합니다. 독일군이 매일 다른 설정을 사용한 것처럼, 주어진 날짜에 따라 암호화된 메시지를 해독하는 프로그램을 작성하세요.


문제 해결 방법:

N 값 계산: 주어진 날짜에서 100년 전의 날짜(기준 날짜)와의 차이를 일수로 계산하여 N 값을 구합니다. 이 값은 암호화된 문자를 복호화하는 데 사용됩니다.

예를 들어, 1944 6/6이 입력되었을 경우, N = (1944년 6월 6일 - 1844년 1월 1일)의 일수 차이를 계산합니다.


문자 복호화:

각 문자에 대해 대문자(A-Z)와 소문자(a-z)는 따로 처리됩니다.

대문자는 알파벳 범위 내에서 (ord(문자) - ord('A') - N) % 26으로 복호화되며, 소문자는 (ord(문자) - ord('a') - N) % 26으로 복호화됩니다.

공백 및 특수 문자는 그대로 유지됩니다.

여러 문단 처리: 빈 줄로 구분된 각 문단을 순차적으로 처리하며 복호화된 결과를 출력합니다.

 

이 문제를 해결하면 제2차 세계대전의 중요한 암호를 풀어내고 전쟁의 흐름을 바꿀 수 있습니다.

 

입력 설명

주어진 날짜를 기반으로 암호화된 여러 문단의 메시지를 복호화하는 프로그램을 작성하세요. 각 문단은 날짜별로 암호화되어 있으며, 날짜를 기반으로 계산된 N 값을 사용하여 암호화된 문자를 복호화해야 합니다.

 

각 메시지는 대문자와 소문자로 이루어져 있으며, 공백과 특수 문자는 그대로 유지됩니다.

날짜에 기반한 N 값은 현재 날짜와 100년 전의 날짜(기준 날짜) 사이의 일수 차이로 계산됩니다.

대문자와 소문자는 각각의 알파벳 범위 내에서 순환합니다.

입력 형식

첫 번째 줄에 날짜가 주어집니다. 형식은 YYYY M/D입니다. (예: 1944 6/6)

여러 개의 암호화된 문단이 빈 줄로 구분되어 입력됩니다. 각 문장은 마침표로 끝납니다.

출력 설명

복호화된 여러 문단의 메시지를 출력하세요.

출력 형식은 입력받은 문단은 복호화한 후 문장단위로 출력합니다.

입력 예시 Copy

1944 6/6
Ymj gfyyqj nx fgtzy yt gjlns. Fqq ywttux rzxy gj wjfid. Rtaj yt dtzw utxnyntsx nrrjinfyjqd. Bj hfssty fkktwi fsd ijqfdx. Anhytwd ijujsix ts xujji.

출력 예시 Copy

The battle is about to begin.
All troops must be ready.
Move to your positions immediately.
We cannot afford any delays.
Victory depends on speed.

출처/분류