슬기로운 연구생활

[프로그래머스] 시저 암호 본문

슬기로운 코테 생활

[프로그래머스] 시저 암호

vhrehfdl 2020. 12. 9. 14:08

* 문제

programmers.co.kr/learn/courses/30/lessons/12926

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가

programmers.co.kr

 

* 문제 풀이 

- 첫째, ord를 사용해서 문자열을 ascii 코드로 변환한다.

- 둘째, n만큼 추가한다.

- 셋째, 조건문을 사용해 대문자 Z 범위를 넘어가는 경우 -26을 해서 A부터 시작하게 한다. 마찬가지로 소문자 z 범위를 넘어가는 경우 -26을 해서 a부터 시작하게 한다.

- 넷째, chr를 사용해 ascii 코드를 문자열로 바꾼다.

 

* 생각

- chr과 ord를 알게되었다.

- 다른 사람풀이를 보니까 대문자 소문자 파악하는 것을 islower()과 isupper()로 체크했다. 참고하자.

 

* 코드 

def solution(s, n):
    answer = ''
    for i in range(0, len(s)):
        ascii = ord(s[i])
        ascii += n
        if ascii > 90 and ord(s[i]) > 64 and ord(s[i]) < 91:
            ascii -= 26
        elif ascii > 122 and ord(s[i]) > 96 and ord(s[i]) < 123:
            ascii -= 26
        elif ord(s[i]) == 32:
            ascii = 32
            
        temp_char = chr(ascii)
        answer += temp_char
    
    return answer

 

Comments