내 풀이 - 틀린 답
: 출력 형식이 잘못됐다고 나온다 ㅠ
'a'이런식으로 쓰면 아스키코드로 인식하는 건 s대신 문자를 썼을 때임!
# split()는 기본적으로 공백을 기준으로 문자열을 나눔
words = input().split()
for word in words:
for str in word:
s = ord(str)
# 아스키코드가 대문자 범위(65~90) 안에 있고,
if ord('A') <= s <= ord('Z'):
# s+13이 Z를 넘지 않으면 13을 더하고
if s+13 <= ord('Z'):
s += 13
else: # 넘으면 아래 식처럼
s = ord('A') + 13 - (ord('Z') - s) -1
# 아스키코드가 소문자 범위(97~122) 안에 있으면 +13
# 범위를 넘으면 다시 돌려야 되니까
elif ord('a') <= s <= ord('z'):
# s+13이 z를 넘지 않으면 13을 더하고
if s+13 <= ord('z'):
s += 13
else: # 넘으면 아래 식처럼
s = ord('a') + 13 - (ord('z') - s) -1
print(chr(s), end="")
print(end=" ")
내 풀이 - 맞은 답
- split()지우고, 공백자체를 같이 넣어서 받아주니까 해결
# # split()는 기본적으로 공백을 기준으로 문자열을 나눔
words = input()
answer = ''
for word in words:
for str in word:
s = ord(str)
# 아스키코드가 대문자 범위(65~90) 안에 있고,
if ord('A') <= s <= ord('Z'):
# s+13이 Z를 넘지 않으면 13을 더하고
if s+13 <= ord('Z'):
s += 13
else: # 넘으면 아래 식처럼
s = ord('A') + 13 - (ord('Z') - s) -1
# 아스키코드가 소문자 범위(97~122) 안에 있으면 +13
# 범위를 넘으면 다시 돌려야 되니까
elif ord('a') <= s <= ord('z'):
# s+13이 z를 넘지 않으면 13을 더하고
if s+13 <= ord('z'):
s += 13
else: # 넘으면 아래 식처럼
s = ord('a') + 13 - (ord('z') - s) -1
answer += chr(s)
print(answer)
내 풀이 - 틀린답, 확인 다시하기 ㅜ
- 애초에 +13을 한 값이 z, Z를 넘는지 확인하면 됨
- 넘었을 시, 26빼면 됨 왜냐하면! 알파벳 갯수는 26개이기 때문이지!
- 하지만 틀렸지,,!
# 26을 빼면, 한 바퀴 도는 효과
# 애초에 공백도 같이 받아서 따로 출력할 필요 없게 하기
# 왜 틀렸는지 모르겠다 ㅠㅠ
word = input()
answer = ''
for w in word:
# 먼저 13을 더하면 공백도 더하게 되니까 범위 안에서 더해주기
# w = chr(ord(w) + 13)
s = ord(w) + 13
# 소문자/ 대문자 범위 내면 그냥 더하기
if ord('a') <= s <= ord('z') or ord('A') <= s <= ord('Z'):
answer += chr(s)
elif s > ord('z') or s > ord('Z'):
answer += chr(s - 26)
else:
answer += chr(s - 13)
print(answer)
'Algorithm_PYTHON' 카테고리의 다른 글
| [백준_파이썬]1357_뒤집힌 덧셈 (0) | 2021.09.15 |
|---|---|
| [백준_파이썬]10610_30 (0) | 2021.09.11 |
| [백준_파이썬]1259_팰린드롬수 (0) | 2021.09.11 |
| [백준_파이썬]2570번_계단 오르기 (0) | 2021.08.28 |
| [백준_파이썬]1463번_1로 만들기 (0) | 2021.08.28 |