달팽이 암호
면접 대비시간 제한5초메모리 제한1024 MB
홀수 크기 n×n 표의 가운데에서 바깥쪽으로 나선을 따라 글자를 채운 뒤, 행 순서대로 읽은 문자열을 출력합니다.
문제
달팽이에게는 뱀, 거북, 새 같은 천적이 많다. 그래서 달팽이는 이동 경로가 들키지 않도록 경로를 암호로 주고받아야 한다.

암호화 방법: 메시지는 문자로만 이루어진다. 메시지의 길이를 L이라고 하자. N×N ≥ L을 만족하는 가장 작은 홀수 N을 고른다. 그다음 N×N 표를 다음과 같이 채운다. 메시지의 첫 글자는 표의 가운데 칸에 넣고, 나머지 글자는 가운데 칸 둘레를 달팽이 껍데기처럼 돌면서 넣는다. 그림은 7×7 표에서 글자를 넣는 순서를 보여준다. 가운데 칸에서 위로 올라간 뒤 오른쪽, 아래, 왼쪽, 위 순서로 계속 이동한다.
아래는 암호화 예시이다. 메시지를 넣고 남은 칸은 '#' 문자로 채운다.
Message: ABCDEFGH
암호화 결과:
#BC
HAD
GFE
Message: ABCDEFGHIJKLMNOPQRSTUVW
암호화 결과:
#JKLM
#IBCN
WHADO
VGFEP
UTSRQ
Message: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv
암호화 결과:
#Zabcde
vYJKLMf
uXIBCNg
tWHADOh
sVGFEPi
rUTSRQj
qponmlk
주어진 표 크기와 원본 메시지를 바탕으로 메시지를 암호화하라. 달팽이가 더 오래 살 수 있도록 말이다.
입력
첫째 줄에 사용할 표의 크기를 나타내는 홀수 정수 n (1 ≤ n ≤ 19)이 주어진다. 둘째 줄에는 암호화할 메시지가 주어진다. 메시지는 대소문자 영문자로만 이루어진 1자 이상 361자(19×19) 이하의 문자열이다. 메시지는 표에 들어간다고 가정한다.
출력
암호화한 메시지를 한 줄에 출력한다. 1행, 2행, 3행 순서로 행 우선 순서에 따라 이어서 출력한다. 마지막 행을 출력한 뒤에는 줄바꿈 문자를 출력한다.
출력에는 '#' 문자를 포함하지 않는다.