출력 형식이 잘못되었습니다 가 계속 나오던 문제이당 결국 해결한 방법은 버릇 처럼 사용하는 strip 을 없애는 것이었다. 문제를 잘 읽어보면 알파벳이 아닌 글자는 그대로 있어야 한다. 고 적혀 있다. 필요할 때만 쓰도록 하자.
그 외에 리스트를 출력할 때 문제가 요구하는 문자열 형식으로 출력하기 위해서 print(''.join(s) 를 사용했다.
대문자, 소문자일 때를 나누고 숫자, 공백 (즉 알파벳이 아닐 때) 도 조건을 나누었다. 아스키 코드를 사용해서 이들을 if 문으로 나누어 주고 아스키 코드를 다시 문자로 만드는 chr 을 사용했다. 이때 만약 13 을 더했을 때 대문자 범위, 또는 소문자 범위 등을 넘어갈 경우엔 13 을 빼준다.
s = list(input())
# 알파벳이 아닌 것은 그대로 둬라... strip 쓰지 마라
# s = list(input().strip())
# answer = []
for i in range(len(s)):
if 97 <= ord(s[i]) <= 109 or 65 <= ord(s[i]) <= 77 :
s[i] = chr(ord(s[i]) + 13)
elif 78 <= ord(s[i]) <= 90 or 110 <= ord(s[i]) <= 122 :
s[i] = chr(ord(s[i]) - 13)
elif 48 <= ord(s[i]) <= 57 or s[i] == ' ':
s[i] = s[i]
# else:
# s[i] += s[i]
# print(answer)
print(''.join(s))
# 1. 공백 없이 결과 출력하기 O n r x w | | { \ { y v { r W q t r
# 특정 아스키 코드 범위 넘어갈 때 예외 처리
'Algorithm 뽀개기' 카테고리의 다른 글
[백준] 6588 골드바흐의 추측 - 에라토스테네스의 체 (Python) (1) | 2024.07.21 |
---|---|
[백준] 2609 최대공약수와 최소공배수 (Python) (0) | 2024.07.05 |
[백준] 10820 문자열 분석 (Python) (1) | 2024.07.03 |
[백준] 17298 오큰수 (Python) (0) | 2024.07.01 |
[백준] 1874 스택 수열 (Python) (0) | 2024.06.28 |