Programming/백준
[브론즈 2] 백준 1718 - 암호 (파이썬)
pental
2025. 9. 12. 09:59
https://www.acmicpc.net/problem/1718
핵심은 평문을 주어진 KEY로 암호화한 문장을 해독하는 것인데, 여기서 중요한 포인트는 키 값에서 +1 처리를 반드시 해줘야 한다는 점이다.
S = input().rstrip()
KEY = input().rstrip()
LONG_KEY = ""
while len(LONG_KEY) < len(S):
LONG_KEY += KEY
- 암호화할 평문 S와 키 KEY를 입력받는다.
- 키는 평문보다 짧을 수 있기 때문에 평문의 길이에 맞게 반복해서 이어 붙인다.
result = []
for i in range(len(S)):
if S[i] == " ":
result.append(" ")
else:
c = ord(S[i]) - ord('a')
k = ord(LONG_KEY[i]) - ord('a')
dec = (c - (k+1)) % 26
result.append(chr(dec + ord('a')))
- 평문이 공백 " "이면 그대로 결과에 넣는다.
- 알파벳일 경우:
- 평문의 문자를 숫자로 변환(a=0, b=1, …).
- 키의 문자를 숫자로 변환.
- 암호문을 만들 때는 (평문 + 키+1) % 26으로 암호화
# [브론즈 2] 백준 1718 - 암호
S = input().rstrip()
KEY = input().rstrip()
LONG_KEY = ""
while len(LONG_KEY) < len(S):
LONG_KEY += KEY
result = []
for i in range(len(S)):
if S[i] == " ":
result.append(" ")
else:
c = ord(S[i]) - ord('a')
k = ord(LONG_KEY[i]) - ord('a')
dec = (c - (k+1)) % 26
result.append(chr(dec + ord('a')))
print("".join(result))