-
[프로그래머스] 시저 암호Engineering WIKI/Programmers 2022. 4. 19. 11:09
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
내 풀이 (실패)
def solution(s, n): answer = '' upper_list = list() lower_list = list() for i in range(ord('A'), ord('Z') + 1): upper_list.append(chr(i)) for i in range(ord('a'), ord('z') + 1): lower_list.append(chr(i)) for i in s: if i in upper_list: if i == 'Z': answer += upper_list[n - 1] else: next_index = upper_list.index(i) + n answer += upper_list[next_index] elif i in lower_list: if i == 'z': answer += lower_list[n - 1] else: next_index = lower_list.index(i) + n answer += lower_list[next_index] else: answer += " " return answer
내풀이 (성공)
def solution(s, n): answer = '' upper_list = list() lower_list = list() for i in range(ord('A'), ord('Z') + 1): upper_list.append(chr(i)) for i in range(ord('a'), ord('z') + 1): lower_list.append(chr(i)) for i in s: if i in upper_list: next_index = upper_list.index(i) + n answer += upper_list[next_index % 26] elif i in lower_list: next_index = lower_list.index(i) + n answer += lower_list[next_index % 26] else: answer += " " return answer
다른방법 1
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))
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) 2022.04.21 [프로그래머스] 자릿수 더하기 (0) 2022.04.21 [프로그래머스] 이상한 문자 만들기 (0) 2022.04.20 [프로그래머스] 약수의 합 (0) 2022.04.19 [프로그래머스] 문자열을 정수로 바꾸기 (0) 2022.04.19 [프로그래머스] 소수 찾기 (0) 2022.04.19 [프로그래머스] 문자열 다루기 기본 (0) 2022.04.15 [프로그래머스] 문자열 내림차순으로 배치하기 (0) 2022.04.15