[자료구조(참고)] [BJ11655] ROT13
✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/백준 알고리즘

[자료구조(참고)] [BJ11655] ROT13

코드 플러스

🚩 문제 설명

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

 

11655번: ROT13

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

www.acmicpc.net

BJ11655

 

⏱️ 시간 복잡도
▪ 문자열의 크기가 N이라고 가정한다면, 시간 복잡도는 O(N)에 해당한다.

◾ ROT13 암호화

  • 카이사르 암호의 일종
  • 영어 알파벳을 13글자씩 밀어서 만든다.
  • 해당 암호문을 복호화 할려면 다시 ROT13 하면 된다.
  • ROT13은 알파벳 대/소문자에만 적용할 수 있다.

◾ 만약 알파벳이 아닌 숫자가 나온다면 원래 글자 그대로 남아 있어야 한다.

◾ 주어지는 문자열을 ROT13 에 맞게 암호화 하는 문제.

 

 

 


 

 

 

입출력

1) 암호화 해야할 문자열이 주어진다.
return ➡️ ROT13으로 암호화한 문자열을 출력.

✔️ 예제 1

Baekjoon Online Judge
Onrxwbba Bayvar Whqtr

 

✔️ 예제 2

One is 1
Bar vf 1

 

 

 


 

 

 

📑 문제 풀이

with 파이썬 (Python)

import sys

S = sys.stdin.readline()

for s in S:
    if ord(s) in range(ord('a'), ord('z') - 12) or ord(s) in range(ord('A'), ord('Z') - 12):
        print(chr(ord(s) + 13), end='')
    elif ord(s) in range(ord('z') - 13, ord('z') + 1) or ord(s) in range(ord('Z') - 13, ord('Z') + 1):
        print(chr(ord(s) - 13), end='')
    else:
        print(s, end='')

💬 Point

➡️  ord('z') - 13 to ord('z') + 1 에 해당하면 - 13한다.

◾ m 까지는 13을 더해주면 된다.

◾ n 부터는 13을 더하면 z에 해당하는 90을 초과하게 된다.

◾ 초과하게 되면 다시 a 부터 시작된다.

◾ 따라서 이는 13을 빼주는 것과 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# 코드플러스 ROT13 파이썬 python

# 백준 11655 ROT13 파이썬 python


 

728x90