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))