반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 23080번 스키테일 암호 파이썬(Python)
1) 문제번호 : 23080번
2) 문제 출처
https://www.acmicpc.net/problem/23080
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="")
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 14264번 정육각형과 삼각형 파이썬(Python) (0) | 2021.11.09 |
---|---|
[백준 알고리즘] 백준 10773번 제로 파이썬(Python) (0) | 2021.10.08 |
[백준 알고리즘] 백준 23027번 1번부터 문제의 상태가…? 파이썬(Python) (0) | 2021.10.08 |
[백준 알고리즘] 백준 23054번 참가자 명단 파이썬(Python) (0) | 2021.10.07 |
[백준 알고리즘] 백준 10179번 쿠폰 자바(JAVA) (0) | 2021.09.08 |
[백준 알고리즘] 백준 10156번 과자 자바(JAVA) (0) | 2021.09.07 |
[백준 알고리즘] 백준 15921번 수찬은 마린보이야!! 자바(JAVA) (0) | 2021.09.06 |
[백준 알고리즘] 백준 15963번 CASIO 자바(JAVA) (0) | 2021.09.05 |
최근댓글