def solution(s, n):
answer = '' # 알파벳 26개, A 65 Z: 90 a:97 z:122 (space): 32
for i in s:
if ord(i)==32: # case (SPACE)
answer+=(i)
continue
elif (ord(i)>=65) & (ord(i)<=90): # case UPPER
tmp=ord(i)+n
if tmp>90:
tmp-=26
answer+=(chr(tmp))
elif (ord(i)>=97) & (ord(i)<=122): # case LOWER
tmp=ord(i)+n
if tmp>122:
tmp-=26
answer+=(chr(tmp))
return answer
C에서는 character를 int로 찍으면 ascii code로 나타내주는데 파이썬은 ord()함수를 써야했다.
ord()함수를 사용해서 (space)면 그대로 추가하고 upper나 lower 이면 시저암호를 돌리는 방식이다.
타인의 코드
def caesar(s, n):
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 "".join(s)
# 주어진 문장을 암호화하여 반환하세요.
# 실행을 위한 테스트코드입니다.
print('s는 "a B z", n은 4인 경우: ' + caesar("a B z", 4))
isupper(), islower() 라는 함수를 사용하면 간단하게 끝난다........
나는 너무 C처럼 생각했나보다
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] LEVEL1 자릿수 더하기,python3 (0) | 2019.10.19 |
---|---|
[프로그래머스] LEVEL1 이상한 문자 만들기, python3 (0) | 2019.10.19 |
[프로그래머스] LEVEL1 문자열을 정수로 바꾸기, 수박수박수?, python3 (0) | 2019.10.17 |
[프로그래머스] LEVEL1 소수 찾기, python3 (0) | 2019.10.17 |
[프로그래머스] LEVEL1 서울에서 김서방 찾기, python3 (0) | 2019.10.17 |