문제1445--스키테일 암호

1445: 스키테일 암호

[만든사람 : ]
시간제한 : 1.000 sec  메모리제한 : 128 MB  제출 : 9  맞은 사람 : 2

제출  

문제 설명

그리스 지역의 옛 나라인 스파르타에서는 전쟁터에 나가있는 군대에 비밀메시지를 전할 때 암호를 사용했다. 
이들이 사용한 방법은 스키테일 방식으로 아래와 같은 규칙을 따른다.
1. 가장 처음 위치에 원본 문자열의 가장 처음 글자를 쓴다.
2. 이후의 원본 문자열의 글자를 일정한 거리를 두고 쓴다.
3. 이번에 쓸 문자 위치에 글자가 있으면 그다음 위치에 쓴다.
4. 일정한 거리만큼 증가한 위치가 원본 문자열의 길이보다 먼 위치가 되면 (해당 위치 값 – 문자열의 길이)를 취해 로테이션 형태를 만들어준다. 
예를 들어 ABCD를 2의 거리를 두고 쓰면

의 순서로 입력되게 된다.
먼저 0번에 가장 처음 글자인 A를 쓰고, 2만큼 뒤에 B를 쓴다.
마찬가지로 2만큼 더 가면 4의 위치이나 4.의 조건에 따라 (4 – 4)를 계산하면 다시 처음인 0의 위치로 오게 되며 이미 0의 위치에 A가 있으므로 3.의 조건에 따라 1의 위치에 C를 쓰게 된다.
1의 위치에서 2만큼 뒤에 D를 쓰면 모든 문자열을 다 쓴 것이므로 끝나며 ACBD로 암호화 된 것을 확인할 수 있다.
문자열이 주어지고, 거리가 주어질 때 해당 문자열을 스키테일 방식으로 암호화하는 프로그램을 작성하시오.

입력 설명

첫 번째 줄에 문자열의 길이 L(1 ≤ L ≤ 100,000)와 암호화를 시킬 거리 D(1 ≤ D ≤ L)가 주어진다.
두 번째 줄에 문자열 S가 주어진다.

출력 설명

첫 번째 줄에 S를 D거리 만큼 스키테일 방식으로 암호화한 문자열을 출력한다.

입력 예시1 Copy

4 2
ABCD

출력 예시1 Copy

ACBD

입력 예시2 Copy

11 3
CCUBECODING

출력 예시2 Copy

CEICCNUOGBD

출처/분류