본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 11655 ROT13 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 8. 17.
728x90
반응형

BaekJoon 백준 11655 ROT13 문제는 카이사르 암호의 일종으로 영어 알파벳 대, 소문자를 13 글자씩 밀어서 만든다. 알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 한다. 문자열을 "ROT13"으로 암호화한 다음 출력하는 문제이다. 난이도는 Bronze 1이다.

 

BaekJoon 11655 ROT13 문제 정보

출처

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

난이도

- 브론즈 1 / Bronze 1

 

ROT13 문제 요약

  • ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13 글자씩 밀어서 만든다.
  • 예를 들어, "Baekjoon Online Judge"를 ROT13으로 암호화하면 "Onrxwbba Bayvar Whqtr"가 된다.
  • ROT13은 알파벳 대문자와 소문자에만 적용할 수 있다. 알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 한다.
  • 길이 100을 넘지 않는 문자열이 주어졌을 때, "ROT13"으로 암호화한 다음 출력한다.

 

문제 풀이 과정

  1. string 클래스를 import 한다.
  2. 문자열을 리스트로 입력받는다.
  3. 각 문자를 얻어와 알파벳이면 +13 번째의 알파벳으로 바꿔 저장한다. (string.ascii_uppercase, string.ascii_uppercase 사용)
  4. "ROT13"으로 암호화한 문자열을 출력한다.

 

코드 및 설명
import string

S = list(input())
for i in range(len(S)):
    # 대문자
    if S[i].isupper():
        ROT13 = string.ascii_uppercase.index(S[i]) + 13
        if ROT13 >= 26:
            ROT13 -= 26
        S[i] = string.ascii_uppercase[ROT13]
    # 소문자
    elif S[i].islower():
        ROT13 = string.ascii_lowercase.index(S[i]) + 13
        if ROT13 >= 26:
            ROT13 -= 26
        S[i] = string.ascii_lowercase[ROT13]
    # 알파벳이 아닌 글자
    else:
        continue

print("".join(S))

BaekJoon 백준 11655 ROT13 문제를 파이썬 python의 string 클래스를 사용하여 풀어보았다. 난이도는 Bronze 브론즈 1이다. 

728x90
반응형

댓글