728x90
반응형
시저 암호(프로그래머스Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/12926
내 코드
def solution(s, n):
answer = ''
s = list(s)
for i in range(len(s)):
if s[i] != ' ':
if ord('a') <= ord(s[i]) <=ord('z'):
if ord('a') <= ord(s[i])+n <=ord('z'):
s[i] = chr(ord(s[i])+n)
else:
s[i] = chr(ord(s[i])+n-26)
elif ord('A')<= ord(s[i]) <=ord('Z'):
if ord('A')<= ord(s[i])+n <=ord('Z'):
s[i] = chr(ord(s[i])+n)
else:
s[i] = chr(ord(s[i])+n-26)
else:
s[i] = chr(ord(s[i])+n-26)
answer = ''.join(s)
return answer
간략하게 할 방법이 생각이 안나서 경우대로 적긴했는데 굉장히 난잡하다...
참고로 테스트 6번 쯤에서 오류가 나는 분들은 대문자가 소문자를 넘어가는 경우를 고려해보길 바란다.
코드의 개선을 위해 다른 분이 작성하신 베스트코드를 가져와봤다.
def solution(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)
728x90
반응형
'Python공부 > 프로그래머스' 카테고리의 다른 글
(Python) 숫자 짝꿍 (프로그래머스 Lv.1) (0) | 2023.06.15 |
---|---|
(Python) 크기가 작은 부분 문자열(프로그래머스Lv.1)/[:]의 활용 (0) | 2023.06.14 |
(Python) 삼총사(프로그래머스 Lv.1) (2) | 2023.06.14 |
(Python)같은 숫자는 싫어(프로그래머스 Lv.1)/한줄코딩 연습 (0) | 2023.06.14 |
(Python)최소 직사각형(프로그래머스 Lv.1) (0) | 2023.06.14 |