Algorithm : Programmers - 시저암호

코일·2021년 12월 22일
0

algorithm

목록 보기
12/37
post-thumbnail

링크텍스트

👉 문제

🤔 생각해보기

  1. 알파벳을 n칸씩 미룬다 = +n
  2. ord( ), chr( ) 을 사용하면 되겠구나.
  3. 대문자일때, 소문자일때 => 대소문자 확인하는 내장함수는 isupper( ) / islower( )
  4. 출력하기

👉 해결

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)

실수

s = list(s)

리스트를 받음에 있어서 이게 가장 간단한 출력인듯 하다.
입력을 받고 for문으로 다시 array에 넣어주는 행동을 했었다...

s[i] = chr((ord(s[i]) - ord('A') + n)%26 + ord('A'))
1. 알파벳은 26개 이기 때문에 글자에 %26을 해준다. 이렇게 되면 나머지가 생기기 때문에
	'z' 이후에 'a' 가 나올 수 있다.
    
2. 대문자 A 와 소문자 a 가 가진 아스키코드값이 다르기 때문에 if-else로 나눠줘야했었다.

profile
How do you get what you want?🤔🤔

0개의 댓글