오늘 풀어본 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12926
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식인 시저 암호를 구현하는 문제입니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수 solution을 완성하는 것이 목표입니다.
문제 풀이 순서:
- 주어진 문자열 s를 순회하며 반복할 문자열을 작성하고 답을 저장할 저장소를 만들고 출력을 선언한다.
def solution(s, n):
answer = ""
for abc in s:
return answer
- 공백 문자는 그대로 유지합니다.
if abc.isalpha(): # 알파벳인지 확인
else: # 공백일 경우
answer += abc
- 문자열의 내용 알파벳인 경우, 대문자와 소문자를 구분하는 조건문을 생성합니다.
if abc.isalpha(): # 알파벳인지 확인
if abc.isupper(): # 대문자 일 경우
abc_set = ord('A')
else: # 대문자가 아닐 경우
abc_set = ord('a')
- 문자열의 값을 정수로 바꾼뒤 n만큼 더하고 다시 문자열로 변환하고 저장소 answer 값에 추가하기
# abc의 값을 n 만큼 밀어내는 조건문
new_char = chr((ord(abc) - abc_set + n) % 26 + abc_set)
answer += new_char
최종 코드문:
def solution(s, n):
answer = ""
for abc in s:
if abc.isalpha(): # 알파벳인지 확인
if abc.isupper(): # 대문자 일 경우
abc_set = ord('A')
else: # 대문자가 아닐 경우
abc_set = ord('a')
# abc의 값을 n 만큼 밀어내는 조건문
new_char = chr((ord(abc) - abc_set + n) % 26 + abc_set)
answer += new_char
else: # 공백일 경우
answer += abc
return answer
- 오늘 배운 점
알파벳을 정수로 변환 및 정수를 알파벳으로 다시 변환시키는 방법을 배웠습니다.알파벳인지 또는 대문자인지 소문자인지 구분하는 조건 명령어에 대해 배웠습니다.
'Python' 카테고리의 다른 글
본 캠프 Python 알고리즘 코드카타 12일차 (0) | 2024.07.12 |
---|---|
본 캠프 Python 알고리즘 코드카타 11일차 (0) | 2024.07.06 |
본 캠프 Python 알고리즘 코드카타 9일차 (0) | 2024.07.02 |
본 캠프 Python 알고리즘 코드카타 8일차 (0) | 2024.07.01 |
본 캠프 Python 알고리즘 코드카타 7일차 (0) | 2024.06.30 |