SW/알고리즘

파이썬 : 프로그래머스 : 시저 암호 : 풀이

얇은생각 2019. 10. 4. 07:30
반응형

코드

upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lower = upper.lower()

def solution(s, n):    
    for idx, char in enumerate(s):
        if char in upper:
            tIdx = (upper.index(char) + n) % 26
            s = s[0:idx] + upper[tIdx] + s[idx+1:]
        elif char in lower:
            tIdx = (lower.index(char) + n) % 26
            s = s[0:idx] + lower[tIdx] + s[idx+1:]

    return s

 

 

 

실행 결과

정확성 테스트

테스트 1 통과 (0.05ms, 10.8MB)
테스트 2 통과 (0.05ms, 10.7MB)
테스트 3 통과 (0.05ms, 10.8MB)
테스트 4 통과 (0.04ms, 10.7MB)
테스트 5 통과 (0.04ms, 10.6MB)
테스트 6 통과 (0.05ms, 10.6MB)
테스트 7 통과 (0.05ms, 10.7MB)
테스트 8 통과 (0.04ms, 10.9MB)
테스트 9 통과 (0.05ms, 10.8MB)
테스트 10 통과 (0.05ms, 10.9MB)
테스트 11 통과 (0.09ms, 10.8MB)
테스트 12 통과 (0.06ms, 10.8MB)
테스트 13 통과 (5.61ms, 10.8MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0

 

 

 

총평

해당하는 문자열은 알파벳과 공백으로만 이루어져 있습니다. 따라서 해당 경우만 체크를 해주었습니다. 해당 문자열이 소문자인 경우에 n만큼 이동하여 해당 문자열을 바꾸어 줍니다. 공백인 경우에는 조건에 해당하지 않기 때문에 지나칩니다. 대문자인 경우에는 마찬가지로 n만큼 이동하여 해당 문자열을 바꾸어 줍니다. 알파벳의 개수는 26이기 때문에 해당 크기를 고정하였습니다. 다른 분들의 좋은 풀이들이 많아, 참고하여서 문제를 해결할 수 있습니다. ord라던지 아스키값이라던지, 다양한 방식으로 접근이 가능할 것 같습니다. 

반응형