휴,, 왜 이렇게 공부하기싫지? 1단계 너무많다^^.. ㅋㅋㅋㅋㅋ
내 코드
def solution(s, n):
answer = ''
a = [ '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']
b = [i.upper() for i in a]
answer = ""
for i in s:
if i>='a' and i<='z':
answer+=a[(a.index(i)+n)%26]
elif i>='A' and i<='Z':
answer+=b[(b.index(i)+n)%26]
else:
answer+=i
return answer
좀 비효율적이게 짠거같다ㅠㅠ 일단 코드를 설명하겠다,,
먼저 a는 소문자 리스트, b는 대문자 리스트를 만든다.
인덱스에 n만큼 더하고 알파벳 갯수인 26을 나눠 나머지를 a와 b에서 각각찾는다.
만약 문자가 아니면 그냥 더한다.
다른사람 코드
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()가 있구나,,, ㅠㅠ 처음 알았다.. 휴.. 외우자!!!
이 분은 별도의 답 리스트를 만들지 않고 s를 리스트로 만들어 s에 대입하는 식으로 푸셨다.
chr
chr(i)는 유니코드(Unicode) 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다.
>>> chr(97)
'a'
>>> chr(44032)
'가'
ord
ord(c)는 문자의 유니코드 값을 돌려주는 함수이다. ord 함수는 chr 함수와 반대이다.
>>> ord('a')
97
>>> ord('가')
44032
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 행렬의 덧셈 (0) | 2021.08.01 |
---|---|
[프로그래머스] 최대공약수와 최소공배수 (0) | 2021.08.01 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) | 2021.07.31 |
[프로그래머스] 정수 내림차순으로 배치하기 (0) | 2021.07.31 |
[프로그래머스] 서울에서 김서방 찾기 (0) | 2021.07.31 |