여니의 취준 준비/코딩테스트 (Python)

[n11655] ROT13 in python

여니's 2021. 10. 18. 14:12


아스키코드, chr(), ord()를 이용하면

풀 수 있었던 문제!

 

ord(문자) -> 숫자

ord(A) -> 65

ord(a) -> 97

 

chr(숫자) -> 문자

chr(65) -> A

 

알파벳 개수는 26개

 

temp = input()
answer = ''

for idx, i in enumerate(temp):
    i = ord(i)
    if 65 <= i <= 90:  # 대문자
        i += 13
        if i > 90: # 13을 더했을 때 90이 넘으면, 앞으로 다시 돌아가야한다.
            i -= 26
            answer += chr(i)
            continue
        else:
            answer += chr(i)

    elif 97 <= i <= 122: # 소문자
        i += 13
        if i > 122:
            i -= 26  # 알파벳 총개수를 빼주면 앞으로 넘어감
            answer += chr(i)
            continue
        else:
            answer += chr(i)
    else: # 공백, 숫자일 땐 아무런 작업 해주지 않는다.
        answer += chr(i)

print(answer)