아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

간단한 암호화

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

요약
메시지에서 알파벳이 아닌 문자를 제거하고, 키워드의 각 열 글자에 해당하는 알파벳 순서만큼 열 단위로 밀어서 암호화한다.
난이도

쉬움10점 중 2점

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

문제

메시지를 암호화하는 가장 간단한 방법 중 하나는 글자를 일정한 칸수만큼 밀어 쓰는 것입니다.

예를 들어 원문의 각 글자를 55칸씩 민다면 A는 암호문에서 F가 됩니다. (B →\to G, C →\to H, …, T →\to Y, U →\to Z, V →\to A, …, Z →\to E) 알파벳의 끝을 넘어가면 다시 A로 돌아옵니다. 복호화하려면 같은 칸수만큼 반대로 밀면 됩니다.

조금 더 까다로운 방식은 밀어 쓸 칸수를 키워드로 정합니다. 키워드가 ACT라고 합시다. 암호화하려면 먼저 원문에서 알파벳이 아닌 문자를 모두 제거한 뒤, 남은 글자를 키워드 길이와 같은 너비의 격자에 채워 넣습니다. 다음 메시지를 암호화한다고 합시다.

BANANA & PEEL

이 메시지를 키워드 ACT를 머리글로 하는 격자로 나타내면 다음과 같습니다.

ACT
BAN
ANA
PEE
L

이제 각 글자를 밀어 쓰되, 미는 칸수는 그 열의 머리글에 놓인 키워드 글자에 따라 달라집니다. 머리글이 A이면 그 열의 글자는 밀지 않고, B이면 11칸씩 밀며, 이런 식으로 알파벳 순서에 따라 밀어 씁니다. 이 예시에서 세 번째 열은 T가 알파벳의 2020번째 글자이므로 1919칸씩 밀립니다.

암호화된 결과는 다음과 같습니다.

ACT
BCG
APT
PGX
L

키워드와 암호화할 문자열을 입력받아 문자열을 암호화하는 프로그램을 작성하세요. 키워드는 66글자를 넘지 않으며, 메시지는 항상 대문자로만 주어집니다.

입력

첫째 줄에 키워드가 주어진다. 둘째 줄에 암호화할 메시지가 주어진다. 키워드의 길이는 66글자를 넘지 않으며, 메시지 전체 길이도 6060글자를 넘지 않는다.

출력

암호화된 메시지를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    ACT
    BANANA & PEEL
    
    예상 출력
    BCGAPTPGXL
    
  2. 예제 2

    입력
    TRICKY
    I LOVE PROGRAMMING!
    
    예상 출력
    BCWXONKFOTKKFZVI