https://www.acmicpc.net/problem/1718
문제 전문은 링크 참조
문제가공
- 평문에 매핑되는 암호 알파벳의 자리수만큼 앞으로 당긴다.
- a보다 자리수가 넘어가는 경우 z부터 다시 시작
코드작성
- 문자를 아스키코드화 하여 자리수를 확인한다.
❓아스키 코드란? 10진수 또는 16진수를 이용해 문자를 표시하기 위한 코드.ex) print(ord('a')) # 97
- arr[-1] = arr배열의 뒤에서 첫번째 값인 성질을 이용한다.
- for i,c in enumerate(text) : i = 배열의 인덱스 , c = 배열의 값
alpabet = list('abcdefghijklmnopqrstuvwxyz')
t= input()
k = input()
def encrypt(text, key):
result =''
for i,c in enumerate(text):
if ord(c) == 32: # 아스키코드 32는 공백
result += c
else:
#암호문길이 < 평문길이인 경우를 위해 key[i%len(key)]로 암호문을 계속돌려 자리수 체크
num = ord(c) - ord(key[i % len(key)]) -1 #평문과 암호키의 아스키코드 차이로 자리수 확인.
result += alpabet[num]
return result
print(encrypt(t, k))
'Python > 백준 (BOJ)' 카테고리의 다른 글
[BOJ][B2]폭죽쇼- 1773 (3) | 2025.08.12 |
---|---|
[BOJ][B2]추론 - 1731 (0) | 2025.08.11 |
[BOJ][B2]손익분기점-1712 (1) | 2025.08.09 |
[BOJ][B2]줄 세우기 - 1681 (1) | 2025.08.08 |
[BOJ][B2]치킨 쿠폰 - 1673 (1) | 2025.08.07 |