대안 암호화
시간 제한2초메모리 제한1024 MB
소문자로 이루어진 문자열들을 주어진 작업에 따라 암호화하거나 복호화합니다. 길이는 같아야 하며, 각 위치의 글자는 원래 글자와 달라야 합니다.
문제
TU Delft는 라이벌 대학의 지식재산권 절도에 맞서기 위해 New Well-Encrypted Remote Communication이라는 보안 통신 시스템을 도입하기로 했다. 내부의 모든 통신은 네트워크로 보내기 전에 암호화되고, 도착하면 복호화된다. 인프라는 이미 구축되어 있으며, TU Delft는 암호화 설계를 당신에게 맡겼다.
당신은 영어 소문자로만 이루어진 텍스트를 암호화하고 복호화하는 알고리즘을 설계해야 한다. 방법을 설명할 필요는 없으며, 보안을 높이기 위해 비밀로 유지하는 것이 좋다. 알고리즘은 다음 조건을 만족해야 한다.
- 텍스트가 무엇이든, 암호화한 뒤 복호화하면 원래 텍스트가 나온다.
- 암호화된 텍스트도 영어 소문자로만 이루어지고, 원래 텍스트와 글자 수가 같다.
- 모든 에 대해, 암호문의 번째 글자는 원문의 번째 글자와 달라야 한다.
nwercjury는 글자 수가 맞지 않으므로 irritating으로 암호화할 수 없다. 또 다섯 번째 글자가 두 단어 모두 c이므로 imbecilic으로도 암호화할 수 없다. 허용되는 암호화 예는 fantastic이다. 이 단어에는 원문과 같은 n과 c가 있지만 위치가 다르다.
프로그램은 테스트 케이스마다 두 번 실행된다. 첫 번째 실행에서는 암호화할 문자열을 입력받고, 두 번째 실행에서는 암호화된 문자열을 입력받아 원래 입력을 복원해야 한다.
풀이 개발을 돕기 위한 테스트 도구가 제공된다.
입력
입력은 다음과 같다.
encrypt또는decrypt중 하나만 적힌 한 줄. 프로그램이 수행할 작업을 나타낸다.- 문자열의 개수를 나타내는 정수 ()이 적힌 한 줄.
- 개의 줄이 주어지며, 각 줄에는 문자열 ()가 하나씩 있다. 암호화하거나 복호화할 텍스트이다. 입력 문자열은 모두 영어 소문자(
a-z)로만 이루어진다.
출력
각 문자열에 대해 요구된 대로 암호화하거나 복호화한 결과를 출력한다.