[programmers] 프로그래머스 시저 암호
(Python)
(글쓴날 : 2020.06.13)
* programmers, 프로그래머스 문제 Python 언어 풀이입니다.
* 소스 코드의 저작권은 글쓴이에게 있습니다.
프로그래머스 시저 암호
1) 문제
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12926
2) 풀이 과정
* 시간 복잡도 : O(n)
알파벳 소문자, 대문자, 공백으로 이루어진 문자열이 주어질 때, 각 알파벳들을 n만큼씩 민 순서의 알파벳으로 변환 시키는 문제입니다.
단, 'z' 혹은 'Z'를 넘어갈 경우 경우 각각 'a'와 'A'로 다시 돌아갑니다.
저의 경우, Python을 사용했습니다.
우선, ord() 함수를 이용해 주어지는 n만큼 알파벳들을 밀었을 때의 아스키코드를 구한 뒤, 'z' 혹은 'Z'일 경우, 소문자일 경우, 대문자일 경우로 각각 분기하여 처리하였습니다.
만약, 구한 아스키코드값이 'z' 혹은 'Z'이거나, 소문자 및 대문자인 경우 중 각각 'z'와 'Z'를 초과한 경우에 아스키코드값에서 알파벳의 개수인 26을 뺀 값에 해당하는 알파벳을 구하여 문제를 해결했습니다.
3) 코드
* Python 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
def solution(s, n):
answer = ''
for alpha in s:
if alpha != ' ':
asciiNum = ord(alpha) + n
if alpha == 'z' or alpha == 'Z':
asciiNum -= 26
elif alpha.islower():
if asciiNum >= 97 + 26:
asciiNum -= 26
else:
if asciiNum >= 65 + 26:
asciiNum -= 26
answer += chr(asciiNum)
continue
answer += alpha
return answer
|
'Deprecated' 카테고리의 다른 글
[programmers] 프로그래머스 이상한 문자 만들기(Python) (0) | 2020.06.13 |
---|---|
[programmers] 프로그래머스 약수의 합(Python) (0) | 2020.06.13 |
[programmers] 프로그래머스 문자열을 정수로 바꾸기(Python) (0) | 2020.06.13 |
[programmers] 프로그래머스 수박수박수박수박수박수?(Python) (0) | 2020.06.12 |
[programmers] 프로그래머스 소수 찾기 Level 1(Python) (0) | 2020.06.12 |