![[프로그래머스] 시저 암호 (python)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3JyfW%2FbtsHRoqg0Ks%2FmjD0y3MjhWGhPrmHvGway0%2Fimg.jpg)
[프로그래머스] 시저 암호 (python)CSE/알고리즘 (algorithm)2024. 6. 6. 20:00
Table of Contents
https://school.programmers.co.kr/learn/courses/30/lessons/12926
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
주어진 문자열의 각 문자를 일정한 거리만큼 밀어 암호화된 문자열을 만드는 문제이다.
먼저 문자열을 리스트로 변환한다. 문자열이 불변 객체이기 때문에, 각 문자를 직접 수정할 수 없기 때문이다.
문자열을 순회하면서 각 문자가 공백인지 확인한다. 만약 공백이라면 다음 문자로 넘어간다.
각 문자가 대문자인지 소문자인지 판별하고, ord() 함수를 사용하여 아스키 코드 값을 얻는다.
그 아스키 값에 현재 문자의 아스키 코드 값에서 기준 값을 빼고 n만큼 더해 26으로 나눈 나머지를 구해 다시 기준값을 더한다.
이렇게 하면 알파벳 순환이 가능하다.
결과 값을 chr 함수를 사용해 다시 문자로 변환한다.
변환된 문자를 리스트에 저장한 후 리스트를 문자열로 합쳐 최종 결과 문자열을 만든다.
def solution(s, n):
s = list(s)
for i in range(len(s)):
if s[i] == ' ':
continue
base = ord('A') if s[i].isupper() else ord('a') # ord
s[i] = chr((ord(s[i]) - base + n) % 26 + base) # chr
return ''.join(s)
728x90
반응형
'CSE > 알고리즘 (algorithm)' 카테고리의 다른 글
[프로그래머스] 숫자의 표현 (python) (0) | 2024.06.07 |
---|---|
[프로그래머스] 2개 이하로 다른 비트 (python) (0) | 2024.06.07 |
파이썬 문자열 문제 유형 (0) | 2024.06.06 |
[프로그래머스] 교점에 별 만들기 (python) (1) | 2024.06.06 |
파이썬에서 시간 복잡도 줄이기 (1) | 2024.06.05 |
@junyeokk :: 나무보다 숲을
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!