을왕라의 정리함
프로그래머스 시저암호 파이썬 본문
보자마자 아 아스키코드!라는 생각이 났고 잊고 있던 아스키코드를 찾아보게 되었다....
대문자: 65 ~ 90
소문자: 97 ~ 122
내 풀이
def solution(s, n):
# 65 ~ 90, 97 ~ 122
s = list(s)
for i, v in enumerate(s):
if 65 <= ord(v) <= 90:
if ord(v) + n > 90:
s[i] = chr(ord(v) + n - 26)
else:
s[i] = chr(ord(v) + n)
elif 97 <= ord(v) <= 122:
if ord(v) + n > 122:
s[i] = chr(ord(v) + n - 26)
else:
s[i] = chr(ord(v) + n)
return "".join(s)
사용된 메서드
list() : 처음은 join과 split을 사용하여 문자열의 ' '공백을 해결하려 했는데 result에서 공백까지 출력해야 했었다.... list()로 ' '공백까지 배열로 만들어 버림
enumerate() : 배열의 요소들에 index값을 부여하고 index와 value값으로 나눔
ord() : 문자를 아스키코드로 변환시켜준다.
chr() : 아스키코드를 문자로 변환시켜준다.
"".join() : 배열의 요소들 사이에 원하는 값을 넣어 합쳐준다. ex) "-".join() : A-B, "".join() : AB
다른사람의 풀이
def caesar(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
elif s[i].islower():
s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))
return "".join(s)
와우,,, isupper(), islower()가 뭘까?
isupper() : 문자열 내의 문자들이 전부 대문자라면 True, 아니면 False
islower() : 문자열 내의 문자들이 전부 대문자라면 False, 아니면 True
코드가 훨씬 간결하다...
'알고리즘 > 프로그래머스' 카테고리의 다른 글
124 나라의 숫자 파이썬 (0) | 2020.09.02 |
---|---|
스킬트리 파이썬 (0) | 2020.09.02 |
다리를 지나는 트럭 파이썬 (0) | 2020.09.01 |
2016년 파이썬 (0) | 2020.09.01 |
완주하지 못한 선수 파이썬 (0) | 2020.09.01 |
Comments