반응형

-풀이

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 함수를 쓰면 된다.

+ Recent posts