<프로그래머스 문제풀이>
해답)
def solution(s, n):
def convert(char):
if char == " ":
return " "
elif ord(char) <= 90: # 대문자일때 (아스키가 65~90)
return chr(((ord(char)-65+n) % 26) + 65)
else: # 소문자일때 (아스키가 97~122)
return chr(((ord(char)-97+n) % 26) + 97)
sList = list(s)
converted = list(map(convert, sList))
return "".join(converted)
풀이)
* ord(char) : char 에 해당하는 ascii 코드의 숫자를 반환합니다.
* chr(n) : 아스키코드 n(정수) 에 해당하는 문자를 반환합니다.
1. 한 문자를 받아, n만큼 민 문자을 반환하는 conver 함수를 만들었습니다.
2. map을 통해 string안에 모든 char들에 대해 작업을 수행합니다.
convert 함수의 원리
a~z 의 아스키코드는 97~122
A~Z 의 아스키 코드는 65~90
대문자라면 65 만큼을 빼서 n만큼 밀고 26 의 나머지를 이용해 얼마나 밀렸는지를 계산합니다.
소문자라면 97 만큼을 빼서 n만큼 밀고 26 의 나머지를 이용해 얼마나 밀렸는지를 계산합니다.
이 방식 예시
Z : 90
n : 1
Z를 1만큼 민다면,
(90-65+1 % 26) = 0 * A~Z 중 0번째 인덱스라는 의미 입니다.
0 + 65 = 65 (A)
* 이 문제 및 로고의 저작권은 Programmers에 있습니다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
728x90
'문제풀이 > Programmers' 카테고리의 다른 글
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 줄 서는 방법 / Python 문제풀이 (0) | 2020.07.17 |
---|---|
[프로그래머스💯] 코딩테스트 연습 > 등굣길 (0) | 2020.07.09 |
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 핸드폰 번호 가리기 (0) | 2020.05.17 |
[프로그래머스💯] 코딩테스트 연습 > 연습문제 > 가장 긴 팰린드롬 (0) | 2020.05.16 |
[프로그래머스💯] 코딩테스트 연습 > 동적 계획법 > 정수 삼각형 / Python 문제풀이 (0) | 2020.05.10 |
댓글