백준 알고리즘/Problems

[BOJ/5598] 카이사르 암호

highlaw00 2023. 2. 24. 13:40

해당 문제를 풀기 위해선 알파벳을 숫자로 변환하는 과정이 필요하다.

그러기 위해 파이썬의 내장 함수인 `ord`, `chr` 를 이용해보자.

https://ddolcat.tistory.com/684

 

[Python] 파이썬 아스키코드(ASCII) 비교 및 변환 총정리 : ord(), chr(), hex()

파이썬에서 아스키코드를 문자로 변환하는 방법과 문자를 아스키코드로 변환하는 방법에 대해 알아봅니다. ord()함수를 사용하여 아스키코드로 변환할 수 있습니다. 반대로 chr()함수를 사용하여

ddolcat.tistory.com

 

카이사르 암호는 변경 전 문자보다 변경 후 문자가 아스키 코드가 3만큼 더 크다.

단, 이는 변경 후 문자 A, B, C에게는 적용되지 않는다.

변경 전 문자 X, Y, Z에 아스키 코드를 3만큼 더한다면 A, B, C가 아닌 엉뚱한 값이 나올 것이기 때문이다.

 

그것에 대한 처리만 해주면 문제를 쉽게 풀 수 있다.

word = input()
ans = ""

for char in word:
    # A, B, C인 경우
    if "A" <= char <= "C":
        ans += chr(ord(char) + 23)
    # A, B, C가 아닌 경우
    else:
        ans += chr(ord(char) - 3)

print(ans)