반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 23080번 스키테일 암호 파이썬(Python)

1) 문제번호 : 23080번

 

2) 문제 출처

https://www.acmicpc.net/problem/23080

 

23080번: 스키테일 암호

첫 번째 줄에 막대의 굵기 \(K\)가 주어진다. 두 번째 줄에 알파벳 소문자만으로 구성된 암호문 \(S\)가 주어진다.

www.acmicpc.net

 

2. 문제

고대 그리스의 옛 나라인 스파르타의 군대에서는 비밀메시지를 전하는 방법으로 스키테일 암호를 사용했다.

스키테일 암호는 스키테일(Scytale)이라고 하는 정해진 굵기의 원통형 막대에 종이로 된 리본을 위에서 아래로 감은 다음 옆으로 메시지를 적는 방식으로 메세지를 암호화한다. 리본을 풀어 길게 늘어선 글을 읽으면 무슨 뜻인지 전혀 알 수 없지만, 암호화할 때와 같은 굵기의 막대에 감으면 내용을 알 수 있게 된다.

다음은 굵기 3의 막대를 사용하여 "iupc" 라는 문자열을 암호화하는 예시이다.

굵기가 X인 막대에 리본을 감고 세로로 글자 X개를 적으면 막대를 한바퀴 돌아오게 된다. 이 막대는 굵기가 3이므로, 세로로 3글자를 적으면 막대를 한바퀴 돌아올 것이다.

암호화하는 문자열을 리본의 가장 왼쪽 끝 부분을 포함하는 가로 한 줄만 사용하여 쓰고, 남은 공간은 아무 문자로나 채운다.

마지막으로 막대에서 리본을 풀면 암호화가 완료된다.

스키테일 암호로 암호화한 문자열과 막대의 굵기가 주어진다. 암호를 해독해 보자!

 

 

3. 제약사항

 

4. 입력

첫 번째 줄에 막대의 굵기 K가 주어진다. 두 번째 줄에 알파벳 소문자만으로 구성된 암호문 S가 주어진다.

 

 

5. 출력

첫 번째 줄에 암호문을 해독한 결과를 출력한다.

 

6. 풀이

- 암호문에서는 맨 처음을 출력한 후에, K번째 문자열부터 출력 후, K만큼 뒤에 있는 암호문을 출력하면 된다.

 

7. 소스 코드

import sys
input=sys.stdin.readline

K = int(input()) # 막대의 굵기
S = input() # 암호문

print(S[0], end="") # 암호문의 맨 처음은 꼭 출력

# 첫 시작은 K번째 문자열부터 출력 후, K만큼 뒤에 있는 암호문 출력
for i in range(K, len(S), K) :
    print(S[i], end="")

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기