T.I.L May 23, 2023 (프로그래머스 Lv.1 시저 암호 - 파이썬)
2023. 5. 24. 06:24ㆍT.I.L (Today_I_Learned)
접근
'''
1. 대문자 문자열, 소문자 문자열 준비
=> 주어지는 문자열 s 안에 문자들을 index 값에 따라 대문자 문자열에 있는지 소문자 문자열에 있는지 찾아봄
=> 대문자 문자열에 있거나 소문자 문자열에 있다면 해당 되는 인덱스 값에 + 주어진 n 값
2. 마지막 문자열 이후에 다시 처음으로 순환되게 하려면...?
=> 'z' or 'Z'의 index 값은 25
=> 만약 주어진 n의 값이 1 이라면?
=> index 값은 26이 됨
=> index 값 26이 됐을때 'a' or 'A'를 표현하고 싶기 때문에 26으로 나눈 나머지 값을 활용해야 하겠음
=> 따라서 26으로 나눈 나머지 값을 계속 활용하면 되겠음
3. 공백은 어떻게 처리할 수 있을까(그냥 둬도 되려나)
=> 공백을 추가해버리자
'''
풀이
def solution(s, n):
lower_str = "abcdefghijklmnopqrstuvwxyz" # 인덱스 = 0 ~ 25
upper_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" # 인덱스 = 0 ~ 25
answer = ""
for str in s:
if str in lower_str:
idx = lower_str.find(str) + n # .find(str)을 사용하여 lower_str 문자열에서 str의 index 추출 하고 + n
answer += lower_str[idx % 26]
elif str in upper_str:
idx = upper_str.find(str) + n # .find(str)을 사용하여 upper_str 문자열에서 str의 index 추출 하고 + n
answer += upper_str[idx % 26]
else: # 공백일 경우 answer에 공백 추가
answer += " "
return answer
'T.I.L (Today_I_Learned)' 카테고리의 다른 글
T.I.L May 26, 2023 (status 400 error bad request 해결과정) (0) | 2023.05.26 |
---|---|
T.I.L May 25, 2023 (DRF 프로젝트 DB sqlite3에서 MySQL로 바꾸기) (0) | 2023.05.25 |
T.I.L May 22, 2023 (TMDB API) (0) | 2023.05.22 |
T.I.L May 19, 2023 (Django CORS policy 문제) (0) | 2023.05.19 |
T.I.L May 18, 2023 (Django 역참조) (0) | 2023.05.18 |