Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 웨어하우스 보관 최적화
- 데이터분석
- forecast
- SQL
- MS SQL Server
- SKU Consolidation
- 피그마인디언
- 파이썬
- Labor Management System
- Gaimification
- leetcode
- 딥러닝
- oracle
- pandas profiling
- ProfileReport
- ModelCheckPoint
- kaggle
- tensorflow
- MySQL
- ABC Analysis
- 신경쓰기의 기술
- 코딩테스트연습
- 코딩테스트
- eda
- Product Demand
- Inventory Optimization
- 프로그래머스
- TensorFlowGPU
- HackerRank
- 당신의 인생이 왜 힘들지 않아야 한다고 생각하십니까
Archives
- Today
- Total
오늘도 배운다
시저 암호 / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 본문
문제
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

제출답안
def solution(s, n):
# A-Z: 65-90, a-z: 97-122. A-Z 25개
answer = ''
for letter in s:
ascii = ord(letter) # 글자의 아스키코드
new_ascii = ascii+n # 아스키코드에 n 더하기
# n을 더했을 때 Z(z)의 코드를 넘을 경우, A(a) 코드 + new_ascii % (Z(z)코드 +1)
if letter.isupper(): # 대문자의 경우: A - 65, Z - 90
answer = answer+chr(65+new_ascii%91) if new_ascii> 90 else answer+chr(new_ascii)
elif letter.islower(): # 소문자의 경우: a - 97, z - 122
answer = answer+chr(97+new_ascii%123) if new_ascii> 122 else answer+chr(new_ascii)
else: # 공백인 경우
answer += ' '
return answer
제출 후 개선답안
숫자를 더하더라도 특정 범위 내에서 순환시키려면
범위의 첫번째 값 + (기존값 + - 범위 내 첫번째 값 + n) % 범위내 개수
코드의 가독성이 좋아짐.
성능면에서는 차이가 없는듯하며
테스트 13에서는 오히려 떨어짐.
>> 호출하는 함수가 많아서 그런가?
def solution(s, n):
answer = ''
for letter in s:
if letter.isupper():
answer += chr(ord('A') + (ord(letter)-ord("A")+n)%26)
elif letter.islower():
answer += chr(ord('a') + (ord(letter)-ord("a")+n)%26)
else:
answer += ' '
return answer


문제 바로가기
728x90
'코딩테스트연습(파이썬)' 카테고리의 다른 글
| 소수 찾기 / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 (0) | 2022.12.07 |
|---|---|
| 2016년 / 프로그래머스, 파이썬 / 코딩테스트 연습 연습문제 (0) | 2022.12.06 |
| 완주하지 못한 선수 / 프로그래머스, 파이썬 코딩테스트 연습 해시 (0) | 2022.12.05 |
| 자연수 뒤집어 배열로 만들기 / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 (0) | 2022.12.05 |
| 약수의 합 / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 (0) | 2022.12.03 |
Comments