백준 11655번 ROT13 파이썬

박슬빈·2021년 9월 16일
0

알고리즘

목록 보기
15/40

문제

입력 , 출력

solution

n = input()
res = ''
for i in range(len(n)):
    if n[i] == ' ' or ord(n[i]) < ord('A'):
        res += n[i]
    else:
        if ord(n[i]) + 13 > 122:
            res += chr(96 + (ord(n[i]) + 13) - 122)
        elif ord(n[i]) + 13 > 90 and ord(n[i]) < 91:
            res += chr(64 + (ord(n[i]) + 13) - 90)
        else:
            res += chr(ord(n[i]) + 13)
print(res)

설명

ord는 파이썬 문자열을 아스키코드로 바꿔주는것이다.
아스키코드 표는

출처
그래서 ord(문자)+13 >90 , > 122 일때 두가지경우에는 a,A에서 더해야 하니까
두개의 조건을 넣어주고
공백 , 숫자일경우에는 그냥 넘어가야하니 ord해서 65보다 작을경우 continue를 넣어서 넘어갔다.
처음에는 ord()+13 > 90 만 넣으니까 소문자에서 체크를 모두 해버리는 오류가 발생했는데 < 91 , 91보다 작을경우를 넣어주니까 해결되었다.

후기

문자열 너무 귀찮다.

profile
이것저것합니다

0개의 댓글