을왕라의 정리함

프로그래머스 시저암호 파이썬 본문

알고리즘/프로그래머스

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

을왕라 2020. 9. 1. 01:11

프로그래머스 출처

 

보자마자 아 아스키코드!라는 생각이 났고 잊고 있던 아스키코드를 찾아보게 되었다....

 

대문자: 65 ~ 90

소문자: 97 ~ 122

 

내 풀이

def solution(s, n):
    # 65 ~ 90, 97 ~ 122
    
    s = list(s)
    
    for i, v in enumerate(s):
        if 65 <= ord(v) <= 90:
            if ord(v) + n > 90:
                s[i] = chr(ord(v) + n - 26)
            else:
                s[i] = chr(ord(v) + n)
        elif 97 <= ord(v) <= 122:
            if ord(v) + n > 122:
                s[i] = chr(ord(v) + n - 26)
            else:
                s[i] = chr(ord(v) + n)
        
    return "".join(s)

 

사용된 메서드

list() : 처음은 join과 split을 사용하여 문자열의 ' '공백을 해결하려 했는데 result에서 공백까지 출력해야 했었다.... list()로 ' '공백까지 배열로 만들어 버림

enumerate() : 배열의 요소들에 index값을 부여하고 index와 value값으로 나눔

ord() : 문자를 아스키코드로 변환시켜준다.

chr() : 아스키코드를 문자로 변환시켜준다.

"".join() : 배열의 요소들 사이에 원하는 값을 넣어 합쳐준다. ex) "-".join() : A-B, "".join() : AB

 

다른사람의 풀이

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)

와우,,, isupper(), islower()가 뭘까?

isupper() : 문자열 내의 문자들이 전부 대문자라면 True, 아니면 False

islower() : 문자열 내의 문자들이 전부 대문자라면 False, 아니면 True

 

코드가 훨씬 간결하다...

'알고리즘 > 프로그래머스' 카테고리의 다른 글

124 나라의 숫자 파이썬  (0) 2020.09.02
스킬트리 파이썬  (0) 2020.09.02
다리를 지나는 트럭 파이썬  (0) 2020.09.01
2016년 파이썬  (0) 2020.09.01
완주하지 못한 선수 파이썬  (0) 2020.09.01
Comments