-풀이
alp = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
s = input()
answer = ''
for i in range(len(s)):
#대문자면
if s[i].isupper() == True:
x = alp.index(s[i].lower())+13
if x <= 25:
answer += alp[x].upper()
else:
answer += alp[x-26].upper()
#소문자면
elif s[i].islower() == True:
x = alp.index(s[i])+13
if x <= 25:
answer += alp[x]
else:
answer += alp[x-26]
else:
answer += s[i]
print(answer)
-풀이 설명(느낀 점)
[30분 sol] 처음에 아스키코드 값을 가져와서 +13만큼 밀어줘야 하나 생각하다가, 그냥 alp변수에 알파벳을 문자열로 담아서 13만큼 밀어도 될 것 같아서 이런 코드를 작성했다.
원래는 s[i]에 alp[x]를 담으려고 했는데,
이러한 문구가 떴다. 이유를 알고보니 문자열은 불변성이라서 되지 변형이 불가능했다. 그래서 answer라는 변수를 따로 만들어서 alp[x]를 더해주었다.
다 풀고나서 더 자세히 알아보니 문자열을 변형할 수 없을 때 해결방법도 있었다.
리스트로 바꿔서 변형하거나, replace 함수를 쓰면 된다.
'알고리즘' 카테고리의 다른 글
[수학] 백준 2609 파이썬 (최대공약수와 최소공배수) 실버5 (0) | 2021.11.08 |
---|---|
[구현] 백준 11656파이썬 (접미사 배열) 실버4 (0) | 2021.11.07 |
[구현] 백준 10820파이썬 (문자열 분석) 브론즈2 (0) | 2021.11.07 |
[구현] 백준 10808파이썬 (알파벳 개수) 브론즈2 (0) | 2021.11.07 |
[수학] 백준 2839 파이썬 (설탕 배달) 브론즈1 (0) | 2021.11.07 |