[브론즈 2] 백준 1718 - 암호 (파이썬)
글 작성자: pental
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))
'Programming > 백준' 카테고리의 다른 글
[브론즈 2] 백준 1673 - 치킨 쿠폰 (파이썬) (0) | 2025.09.12 |
---|---|
[브론즈 2] 백준 1592 - 영식이와 친구들 (파이썬) (0) | 2025.09.11 |
[브론즈 1] 백준 1524 - 세준세비 (파이썬) (0) | 2025.09.10 |
[브론즈 2] 백준 1452 - 피시방 알바 (파이썬) (0) | 2025.09.10 |
[브론즈 2] 백준 1440 - 타임머신 (파이썬) (0) | 2025.09.10 |
댓글
이 글 공유하기
다른 글
-
[브론즈 2] 백준 1673 - 치킨 쿠폰 (파이썬)
[브론즈 2] 백준 1673 - 치킨 쿠폰 (파이썬)
10:48:36 -
[브론즈 2] 백준 1592 - 영식이와 친구들 (파이썬)
[브론즈 2] 백준 1592 - 영식이와 친구들 (파이썬)
2025.09.11 -
[브론즈 1] 백준 1524 - 세준세비 (파이썬)
[브론즈 1] 백준 1524 - 세준세비 (파이썬)
2025.09.10 -
[브론즈 2] 백준 1452 - 피시방 알바 (파이썬)
[브론즈 2] 백준 1452 - 피시방 알바 (파이썬)
2025.09.10