33. 시저 암호
코딩테스트 연습 > 연습문제 > 시저 암호
https://programmers.co.kr/learn/courses/30/lessons/12926
Input value =
s = 알파벳으로 구성된 문자열
n = shift 시키는 정도
Output value =
ㆍ 공백은 아무리 밀어도 공백입니다.
ㆍ s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
ㆍ s의 길이는 8000이하입니다.
ㆍ n은 1 이상, 25이하인 자연수입니다.
#00
s = 'A B'
n = 1
s = list(s)
#01
chr((ord(s[0])-ord('A')+n)%26+ord('A'))
26개씩 반복되는 점을 이용하여, 유니코드 코드 포인트로 변환 후 계산 및 문자열 변환
#02
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('b'))
#03
''.join(s)
대문자,소문자 일 경우를 선택(isupper,islower)을 이용하여 선택 변환
def solution(s):
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('b'))
return ''.join(s)
# Code test
s = 'A a b'
solution(s)
chr/ord 를 이용하여 문자를 shift 가능하다.
isupper/islower() 함수에 대해 이해하였다.