CodingTest/Baekjoon

[baekjoon] 백준 11655번(파이썬): ROT13

JunJangE 2021. 9. 14. 11:11

문제

 

11655번: ROT13

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

www.acmicpc.net

알고리즘

- 대문자와 소문자 알파벳을 미리 만든다.

- 반복문을 통해 입력받은 문자열을 확인한다.

- 알파벳 대문자인지 알파벳 소문자인지 그 외 문자인지 확인한다.

- 알파벳이면 13 글자씩 밀어 결과값에 추가한다.

- 그 외 문자는 그대로 결과값에 추가한다.

코드

s = str(input())
upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" # 대문자 알파벳
lower = "abcdefghijklmnopqrstuvwxyz" # 소문자 알파벳
res = ""

# 입력받은 문자열을 반복문을 통해 확인
for i in s:

    # 대문자인지 확인
    if i.isupper():
        for j in range(len(upper)):
            # 해당 알파벳 위치 찾기
            if i == upper[j]:
                # 범위를 넘어가지 않으면 13을 더해준다.
                if j + 13 < 26:
                    res += upper[j + 13]

                # 범위가 넘어가면 13을 빼준다.
                else:
                    res += upper[j - 13]
    # 소문자인지 확인
    elif i.islower():
        for j in range(len(lower)):
            # 해당 알파벳 위치 찾기
            if i == lower[j]:

                # 범위를 넘어가지 않으면 13을 더해준다.
                if j + 13 < 26:
                    res += lower[j + 13]

                # 범위가 넘어가면 13을 빼준다.
                else:
                    res += lower[j - 13]

    # 그 외 문자는 그대로 추가한다.
    else:
        res += i

print(res)

 

실패한 코드(출력 형식이 잘못되었습니다.)

import sys

s = list(map(str, sys.stdin.readline().strip()))
upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lower = "abcdefghijklmnopqrstuvwxyz"
res = ""
for i in s:
    if i.isupper():
        for j in range(len(upper)):
            if i == upper[j]:
                if j + 13 < 25:
                    res += upper[j + 13]
                else:
                    res += upper[j - 13]

    elif i.islower():
        for j in range(len(lower)):
            if i == lower[j]:
                if j + 13 < 25:
                    res += lower[j + 13]
                else:
                    res += lower[j - 13]

    else:
        res += i

print(res)

strip() 함수를 사용해서 양 쪽 공백을 지우면서 출력 형식이 잘못된 것 같다.

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com