https://school.programmers.co.kr/learn/courses/30/lessons/12926
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자의 아스키코드 변환을 쓸줄 알면 쉽게 풀 수 있는 문제입니다. (각 알파벳 별로 배열을 하드코딩해도 됩니다.)
문자를 아스키코드 값으로 변환해주고, 대 소문자를 구분한 뒤 'a'또는 'A'가 가진 값인 65나 97을 빼줍니다.
그럼 이제 이 알파벳이 몇번째 알파벳인지 알 수 있습니다. 문제에서 주어지는 n값을 더해 뒤로 밀어주고, 혹시 z를 넘어가는 경우를 처리해주기 위해 26으로 나눈 나머지를 취합니다.
ex)
Y는 25번째 알파벳입니다. ord('Y') = 89가 나오고 여기서 ord('A')인 65를 빼주면 25번째 알파벳이라는걸 알 수 있는 24가 남습니다. (A가 0입니다.)
N이 3이라면 24 + 3 = 27이 되고, 이 값을 26으로 나눈 나머지는 1입니다.
Y를 3번 뒤로 밀면 Y Z A B = B가 되고 ord('A')에 1을 더한 66을 chr()해줘도 B가 나옵니다.
def solution(s, n):
msg = list(s)
for i in range(len(msg)):
if msg[i] == " ":
continue
else:
c = ord(msg[i])
msg[i] = chr(((c + n - 65) % 26) + 65) if c < 97 else chr(((c + n - 97) % 26) + 97)
return ''.join(msg)
728x90
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 12921. 소수 찾기 (Lv.1) (0) | 2022.10.10 |
---|---|
[Python] 프로그래머스 12915. 문자열 내 마음대로 정렬하기 (Lv.1) (1) | 2022.10.10 |
[Python] 프로그래머스 12930. 이상한 문자 만들기 (Lv.1) (0) | 2022.10.10 |
[Python] 프로그래머스 12940. 최대공약수와 최소공배수 (Lv.1) (0) | 2022.10.10 |
[Python] 프로그래머스 12969. 직사각형 별찍기 (Lv.1) (0) | 2022.10.07 |