문제
알고리즘
- 대문자와 소문자 알파벳을 미리 만든다.
- 반복문을 통해 입력받은 문자열을 확인한다.
- 알파벳 대문자인지 알파벳 소문자인지 그 외 문자인지 확인한다.
- 알파벳이면 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
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 11656번(파이썬): 접미사 배열 (0) | 2021.09.14 |
---|---|
[baekjoon] 백준 10824번(파이썬): 네 수 (0) | 2021.09.14 |
[baekjoon] 백준 2743번(파이썬): 단어 길이 재기 (0) | 2021.09.14 |
[baekjoon] 백준 10820번(파이썬): 문자열 분석 (0) | 2021.09.13 |
[baekjoon] 백준 10809번(파이썬): 알파벳 찾기 (0) | 2021.09.13 |