Python/백준 (BOJ)

[BOJ][B2]암호- 1718

ㅋㅋ! 2025. 8. 10. 13:00

 

https://www.acmicpc.net/problem/1718

문제 전문은 링크 참조

문제가공

  1. 평문에 매핑되는 암호 알파벳의 자리수만큼 앞으로 당긴다.
  2. 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