-
[💕 프로그래머스 Python] 시저암호Algorithm/1일 1코테 2020. 10. 19. 14:39반응형
프로그래머스 연습문제 1단계
<< 시저암호 >>
by python3
문제설명
programmers.co.kr/learn/courses/30/lessons/12926
내 문제풀이
# 대문자, 소문자 리스트를 만들기 위해 import from string import ascii_lowercase, ascii_uppercase def solution(s, n): u = list(ascii_uppercase) # 대문자가 저장된 list l = list(ascii_lowercase) # 소문자가 저장된 list length = len(u) - 1 # 인덱스를 고려한 전체길이 - 1 answer = '' # 답안 str for i in s: # s에서 하나씩 출력하는데 if i.isupper(): # 1. i가 대문자인 경우 index = u.index(i) # 대문자 리스트에서 i의 인덱스 구하기 if index + n > length: # 인덱스와 n을 더했을때 length보다 길면 다시 0으로 돌아가야 함 a = n - (length - index) - 1 # 전체 길이에서 index를 빼고, 또 그 값을 n에서 빼줌으로써 0부터 다시 돌아갔을 때의 index를 구함 answer += u[a] # 해당 인덱스 값 더해줌 else: answer += u[index+n] elif i.islower(): # 2. i가 소문자인 경우 index = l.index(i) # 대문자와 마찬가지 if index + n > length: a = n - (length - index) -1 answer += l[a] else: answer += l[index+n] else: # 3. i가 공백인 경우 answer += ' ' # 공백을 더해줌 return answer # 리턴
다른사람 풀이 1
def caesar(s, n): s = list(s) # s를 list로 만들어 줌 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)
ord: 아스키코드 값을 출력하는 함수
다른사람 풀이 2
def caesar(s, n): lower_list = "abcdefghijklmnopqrstuvwxyz" upper_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" result = [] for i in s: if i is " ": result.append(" ") elif i.islower() is True: new_ = lower_list.find(i) + n result.append(lower_list[new_ % 26]) #전체길의 26의 나머지면 다시 0부터 시작해서 인덱스 값 출력...! else: new_ = upper_list.find(i) + n result.append(upper_list[new_ % 26]) return "".join(result)
위를 참고해서 내 코드를 간단하게 바꿔봤다.
from string import ascii_lowercase, ascii_uppercase def solution(s, n): u = list(ascii_uppercase) l = list(ascii_lowercase) answer = '' for i in s: if i.isupper(): index = u.index(i) answer += u[(index + n)%26] elif i.islower(): index = l.index(i) answer += l[(index+n)%26] else: answer += ' ' return answer
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 프로그래머스 Python] 전화번호 목록 (0) 2020.10.21 [💕 프로그래머스 Python] JadenCase 문자열 만들기 (0) 2020.10.20 [💕 프로그래머스 Python] 2016년 (0) 2020.10.19 [💕 프로그래머스 Python] 예산 (Summer/Winter Coding 2018) (0) 2020.10.17 [💕 프로그래머스 Python] 크레인 인형뽑기 게임 (from kakao) (0) 2020.10.17