BOJ 11655 ROT13

LONGNEW·2021년 1월 29일
0

BOJ

목록 보기
122/333

https://www.acmicpc.net/problem/11655
시간 1초, 메모리 256MB
input :

  • 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S

output :

  • S를 ROT13으로 암호화한 내용

조건 :

  • 영어 알파벳을 13글자씩 밀어서 만든다.

구현은 그냥 아스키 코드로 바꿔서 13을 더해가지고 범위에서 벗어나면 다시 65나 97부터 시작하도록 하면 된다.

공백때문에 틀렸는데. strip()을 쓸 경우 문자열의 앞 부분도 날려버리기 때문에 공백이 사라지게 된다. 이를 유의 해서 rstrip()을 이용하자.

import sys

sentence = sys.stdin.readline().rstrip()
new = []

for item in sentence:
    alphabet = ord(item)

    if 65 <= alphabet <= 90:
        alphabet += 13

        if alphabet > 90:
            temp = alphabet - 90
            alphabet = 64 + temp
        new.append(chr(alphabet))

    elif 97 <= alphabet <= 122:
        alphabet += 13
        if alphabet > 122:
            temp = alphabet - 122
            alphabet = 96 + temp
        new.append(chr(alphabet))

    else:
        new.append(item)
print("".join(new))

0개의 댓글