문자열 암호화
📌 문제

예제 입력
2
CTU Open Programming Contest
7
This is a secret message that noone should ever see Lets encrypt it
15
text too short
0예제 출력
CMTMUIONPGECNOPNRTOEGSRTA
TESNUECHCAOLERIRGODLYSEENEEPITTEVTTSMHSESIAEAHRETSSTOSN
TEXTTOOSHORT📌 풀이
Logic
- 정수 N 입력 받기
- 0 입력 시 프로그램 종료
- 평문 입력 받기 및 리스트 초기화(Cipher)
- Cipher의 현재 index에 평문의 텍스트를 순서대로 입력
- 마지막 인덱스까지 모두 채워졌다면, start_idx를 1 증가
- 해당 위치를 now_index로 설정 후 텍스트 입력
- 공백 없는 텍스트로 Cipher을 출력
# 변수명
N : 입력한 정수값
text : 입력한 평문
Cipher : 암호문 저장 리스트
start_idx : Cipher에서 입력의 기준이 되는 지점의 index 번호
now_idx : Cipher에서 현재 값을 입력할 index 번호

Python
import sys
while True:
N = int(sys.stdin.readline())
if (N == 0):
break
text = list(sys.stdin.readline().strip().upper().replace(" ", ""))
Cipher = [""] * len(text)
start_idx = 0
now_idx = 0
for i in range(len(text)):
if (now_idx >= len(text)):
start_idx += 1
now_idx = start_idx
Cipher[now_idx] = text[i]
now_idx += N
print("".join(Cipher))
✏️ 새로운 내용
join()
매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수
"구분자".join(리스트)
first = "".join(reversed(word[:i]))
second = "".join(reversed(word[i:j]))
third = "".join(reversed(word[j:]))
answer.append(first + second + third)
📚 회고
💡 join() 함수
- 이전에 문제 풀이를 하면서 공부했었던 내용이지만, 포스트 작성을 시작한 이후 오랜만에 다뤘던 내용이기에 다시 한 번 돌아보는 시간을 가졌다.
- 중요한 점은 join()은 리스트가 아니라 구분자 문자열에서 호출된다.
- 반복문을 사용하는 것보다 간결하고 효율적인 방식이므로, 문자열 처리가 많은 문제에서는 습관적으로 활용할 수 있도록 익숙해질 필요가 있다.
'BOJ > Silver' 카테고리의 다른 글
| [BOJ] #1439 뒤집기 (0) | 2026.04.13 |
|---|---|
| [BOJ] #1769 3의 배수 (1) | 2026.04.13 |
| [BOJ] #1699 제곱수의 합 (0) | 2026.04.12 |
| [BOJ] #2502 떡 먹는 호랑이 (0) | 2026.04.12 |
| [BOJ] #9095 1, 2, 3 더하기 (0) | 2026.04.12 |