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

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

Veni, vidi, vici

면접 대비

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

요약
길이가 홀수인 암호문은 마지막 글자를 버리고 두 글자씩 묶어 키로 원래 글자를 되돌립니다.
난이도

쉬움10점 중 2점

유형
문자열, 수학
정답자
아직 제출이 없습니다

문제

원철이는 암호학 수업에서 카이사르 암호를 배웠다. 카이사르 암호는 아주 유명한 치환 암호이고, 규칙은 다음과 같다.

  1. a를 0, b를 1로 보고, 같은 방식으로 z를 25로 본다.
  2. 키 nn으로 번호 xx를 암호화하면 y≡(x+n) mod 26y \equiv (x+n) \bmod 26이 된다. 예를 들어 n=1n = 1이면 a는 b가 되고, b는 c가 되고, z는 a가 된다.
  3. 암호화된 번호 yy를 복호화하면 x≡(y−n) mod 26x \equiv (y-n) \bmod 26이 된다.

원철이는 이 암호의 약점도 같이 배웠다. 글자의 빈도수를 세는 것만으로 암호가 쉽게 풀린다는 점이다. 원철이는 한 글자를 두 글자로 늘려 암호화하면 이 약점을 피할 수 있다고 생각했다. 즉 글자 "x"를 x≡(y+z−n) mod 26x \equiv (y+z-n) \bmod 26을 만족하는 두 글자 "yz"로 바꾸는 방식이고, 원철이는 이것을 원철 암호라고 부르기로 했다. 단어를 암호화할 때는 맨 앞 글자부터 차례대로 한 글자씩 바꾸고 그 결과를 순서대로 이어 붙인다.

그런데 이렇게 하면 암호문의 길이가 항상 짝수라서 원철 암호를 썼다는 사실이 드러난다. 그래서 원철이는 암호화한 단어의 맨 뒤에 더미(dummy) 글자를 한 개 마음대로 붙일 수도 있다. 따라서 길이가 홀수인 암호문은 마지막 한 글자가 더미이고, 길이가 짝수인 암호문에는 더미가 없다.

원철이가 원철 암호로 한 말을 복호화하라.

입력

첫째 줄에 암호화에 사용한 키를 뜻하는 정수 nn (0≤n<260 \le n < 26)이 주어진다.

둘째 줄에 100개 이하의 단어가 공백 하나로 구분되어 주어진다. 각 단어의 길이는 2 이상 101 이하이고 영어 소문자 'a'부터 'z'로만 이루어져 있다. 이 단어는 모두 원철 암호로 암호화된 단어이다.

출력

입력에 주어진 순서대로 각 단어를 복호화해서 공백 하나로 구분해 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    2
    axcexseg yzkansuqe mlssltqu
    
    예상 출력
    veni vidi vici
    
  2. 예제 2

    입력
    0
    aa ab ba zz
    
    예상 출력
    a b b y
    
  3. 예제 3

    입력
    25
    aaz zaz azb
    
    예상 출력
    b a a
    
  4. 예제 4

    입력
    13
    nm
    
    예상 출력
    m