새소식

⌨️ Algorithms/백준

[Python] 백준 11655번_ROT13

2023. 6. 2. 19:23

  • -

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

 

11655번: ROT13

첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.

www.acmicpc.net

 

  • ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만듦
  • 예를 들어, "Baekjoon Online Judge"를 ROT13으로 암호화하면 "Onrxwbba Bayvar Whqtr"
  • ROT13으로 암호화한 내용을 원래 내용으로 바꾸려면 암호화한 문자열을 다시 ROT13하면 됨
  • 앞에서 암호화한 문자열 "Onrxwbba Bayvar Whqtr"에 다시 ROT13을 적용하면 "Baekjoon Online Judge"
  • ROT13은 알파벳 대문자와 소문자에만 적용할 수 있음
  • 알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 함
  • 예를 들어, "One is 1"을 ROT13으로 암호화하면 "Bar vf 1"
  • 문자열이 주어졌을 때, "ROT13"으로 암호화한 다음 출력하기
  • 입력
    • 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어짐
    • S의 길이는 100을 넘지 않음
  • 출력
    • 첫째 줄에 S를 ROT13으로 암호화한 내용을 출력
  • 시간 제한: 1초
  • 메모리 제한: 256 MB

 

"""
입출력 예시)

(예제 입력 1) 
Baekjoon Online Judge
                        -> Onrxwbba Bayvar Whqtr

(예제 입력 2) 
One is 1
        -> Bar vf 1
"""

 

 

## 의사코드 ##

# # 알파벳인 경우, ROT13으로 변경
# if s.isalpha():
#     # z를 넘어가면 다시 a부터 시작
#     if ord(s) + 13 > ord('z'):
#         new += chr((ord('a')-1) + (ord(s) + 13) - (ord('z')))
#     # Z를 넘어가면 다시 A부터 시작
#     elif ord(s) + 13 > ord('Z') and ord(s) < (ord('Z')+1):
#         new += chr((ord('A')-1) + (ord(s) + 13) - (ord('Z')))
#     else:
#         new += chr(ord(s) + 13)
# # 알파벳이 아닌 경우, 변경 x
# else:
#     new += s

 

 

 

 

string = input()
new = ''
for s in string:
    # 알파벳인 경우, ROT13으로 변경
    if s.isalpha():
        # z를 넘어가면 다시 a부터 시작
        if ord(s) + 13 > ord('z'):
            new += chr((ord('a')-1) + (ord(s) + 13) - (ord('z')))
        # Z를 넘어가면 다시 A부터 시작
        elif ord(s) + 13 > ord('Z') and ord(s) < (ord('Z')+1):
            new += chr((ord('A')-1) + (ord(s) + 13) - (ord('Z')))
        else:
            new += chr(ord(s) + 13)
    # 알파벳이 아닌 경우, 변경 x
    else:
        new += s

print(new)

 

 

 

 

 

 

https://velog.io/@slbin-park/%EB%B0%B1%EC%A4%80-11655%EB%B2%88-ROT13-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

백준 11655번 ROT13 파이썬

ord는 파이썬 문자열을 아스키코드로 바꿔주는것이다.아스키코드 표는출처그래서 ord(문자)+13 >90 , > 122 일때 두가지경우에는 a,A에서 더해야 하니까두개의 조건을 넣어주고공백 , 숫자일경우에는

velog.io

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!