알고리즘

[프로그래머스 lv 1] 시저암호.py

파뱁 2022. 1. 31. 23:09
728x90

<문제 설명>

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

 

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

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

programmers.co.kr

주어진 문장의 알파벳을 일정한 거리만큼 밀어서 만드는 암호가 시저암호이다. 이 시저암호문을 만드는 코드를 작성하는 것이 목표이다.

(단 공백은 밀어도 공백이다.)

 

입출력의 예는 다음과 같다.

s n result
"AB" 1 "BC"
"z" 1 "a"
"a B z" 4 "e F d"

 

<문제 해결 아이디어>

아스키 코드를 이용하면 되는 문제이다. chr() : 아스키 코드의 수를 문자로 변환/ ord() : 문자를 아스키 코드로 변환

isupper()와 islower()로 대소문자를 우선 판별한 후, 그에 맞게끔 아스키 코드 값을 가져와서 주어진 n 만큼 밀면 되는데, Z 는 밀면 A가 되고 z는 밀면 a가 되야하기 때문에 26으로 나눈 나머지를 기준으로 자리를 밀면 된다.

 

<문제 풀이 코드>

def solution(s, n):
    answer = ''
    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 answer.join(s)

채점 결과

728x90
반응형