[프로그래머스 / Python] 시저 암호
- Coding Test/프로그래머스
- 2021. 7. 1.
https://programmers.co.kr/learn/courses/30/lessons/12926
이 문제는 알파벳에 대한 아스키 값을 이용하여 문제를 해결할 수 있다. 알파벳을 주어진 숫자대로 밀다가 z를 넘어가게 되면 다시 a로 넘어가야하기떄문에 알파벳이 대, 소문자 각각 26개 있으므로 나머지 연산을 이용하여 구현할 수 있다.
문제를 풀기위해 필요한 함수들을 정리해보자.
1. 대,소문자 판별
a = "I Love Python"
print a.isupper()
#######################
a = "I LOVE PYTHON"
print a.isupper()
#######################
a = "I Love Python"
print a.islower()
#######################
a = "i love python"
print a.islower()
👉result
False # 문자열 전체가 대문자인지 판별함.
True
False # 문자열 전체가 소문자인지 판별함.
True
2. 아스키코드 변환 함수
print(ord('a'))
print(ord('z'))
print(chr(97))
print(chr(122))
👉result
97
122
a
z
이 함수들을 조합하여 문제를 풀 수 있다.
내 풀이
def solution(s, n):
answer = ''
for i in s:
if i == ' ':
answer += i
continue
if i.isupper():
temp = (ord(i) - ord('A') + n) % 26
answer += chr(temp + ord('A'))
elif i.islower():
temp = (ord(i) - ord('a') + n) % 26
answer += chr(temp + ord('a'))
return answer
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Java] 분수의 덧셈 (0) | 2023.09.21 |
---|---|
[프로그래머스 / Python] 약수의 합 (0) | 2021.07.01 |
[프로그래머스 / Python] 소수 찾기 (0) | 2021.06.22 |
[프로그래머스 / Python] 서울에서 김서방 찾기도움말 (0) | 2021.06.22 |
[프로그래머스 / Python] 문자열 다루기 기본 (0) | 2021.06.22 |