본문 바로가기
프로그래머스/Lv.1

시저 암호 - Python, ord, 시저코드

by 아찌방 2024. 11. 28.

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12926

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

풀이 - 나의 생각

아스키 코드 값과 나머지를 활용하는 방법으로

 

대문자, 소문자 모두 구하는 방법은 같습니다.

 

함수로 빼면 코드 중복을 막을 수 있겠지만

 

간단한 연산이기에 그냥 뒀습니다.

 

예시

 

"a" 는 아스키 코드로 97

 

"z" 는 122 입니다.

 

ch = "z" 일때

 

ord("z") - ord("a") = 25

 

이에 n을 더해준다면

 

25 + n 이 되겠죠

 

그 값을 알파벳 개수인 26으로 나눈 나머지 값을 ord("a") 더 해주면

 

우리가 찾는 알파벳이 되는 겁니다.

 

z -> a -> b -> c -> d ...... -> target

 

코드

 

def solution(s, n):
    answer = ''
    for ch in s:
        if ch == " ":
            answer += ch
        elif "A" <= ch <= "Z":
            answer += chr((ord(ch) - ord("A") + n) % 26 + ord("A"))
        elif "a" <= ch <= "z":
            answer += chr((ord(ch) - ord("a") + n) % 26 + ord("a"))
    return answer

 

 

 

 

 

 

 

다음에 또 봐요

 

728x90