[백준/파이썬] 1855번: 암호

수박강아지·2025년 5월 10일

BAEKJOON

목록 보기
70/174

문제

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

풀이

abcdefghijkl 이라는 문자열을 3개의 열로 암호화 할 때는 다음과 같이 암호화가 될 겁니다.

  1. 문자열을 3개의 열로 쪼개어 세로로 저장
  2. 홀수 행일 경우에는 왼쪽에서 오른쪽(정방향)으로 저장
    짝수 행일 경우에는 오른족에서 왼쪽(역방향)으로 저장
  3. 결과 aeijfbcgklhd

암호화하는 방식을 알았으니 반대로 해석을 해봅시다.

열이 n개로 나누어지니까 이를 나누어서 저장해줍니다.

n = int(input())
s = input()
arr = []

for i in range(0, len(s), n):
    arr.append(s[i:i+n])

저장이 되었으면 짝수 행은 슬라이싱을 이용해 뒤집어줍니다.

for j in range(1, len(arr), 2):
    arr[j] = arr[j][::-1]

그러면 위 표와 같은 상태로 저장이 됩니다.
열 순서대로 출력해주면 끝

res = []
for i in range(n):
    for j in range(len(arr)):
        res.append(arr[j][i])

print(''.join(res))

코드

n = int(input())
s = input()
arr = []

for i in range(0, len(s), n):
    arr.append(s[i:i+n])
    
for j in range(1, len(arr), 2):
    arr[j] = arr[j][::-1]

res = []
for i in range(n):
    for j in range(len(arr)):
        res.append(arr[j][i])

print(''.join(res))

0개의 댓글