나의 풀이
def solution(s, n):
result=""
answer=list(s)
upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lower="abcdefghijklmnopqrstuvwxyz"
for i in answer:
if i ==" ":
result+=" "
elif i.isupper():
result+=upper[((upper.find(i))+n)%26]
else:
result+=lower[((lower.find(i))+n)%26]
return result
▶ list(문자열) 메서드를 사용하는 경우 문자열이 한 글자 단위로 분리되어 리스트 형태로 저장된다.
▶ 문자열에서 find()메서드는 문장열인 매개변수를 찾아서 인덱스를 반환해 준다.
▶ 순환하기 위해서는 % 연산자를 사용한다.
다른 사람의 풀이
def solution(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i]=chr((ord('A')+(ord(s[i])-ord('A')+ n)%26))
elif s[i].islower():
s[i]=chr((ord('a')+(ord(s[i])-ord('a')+ n)%26))
return "".join(s)
▶ list(문자열) 메서드를 사용하는 경우 문자열이 한 글자 단위로 분리되어 리스트 형태로 저장된다.
▶ ord('A')+(ord(s[i])-ord('A')+ n)%26의 해석
▶ ord(s[i])-ord('A') : 문자A부터 문자s[i]까지의 거리 → s[i]="C"일 때 거리:2
▶ n : 문자s[i]부터 "변경될 문자"까지의 거리 → s[i]="C" 이고 변경될 문자가 "F" 일때 거리: 3
▶ ord(s[i])-ord('A')+ n : "문자 A부"터 "변경될 문자F"까지의 거리 →5
'프로그래머스(파이썬) > LV.1(파이썬)' 카테고리의 다른 글
[1차] 비밀지도→ OR연산 + rjust(자릿수, 숫자)★★ (0) | 2022.12.17 |
---|---|
최소직사각형→a,b의 교환, for a, b in sizes 행마다 각각 요소접근★★ (0) | 2022.12.16 |
예산→ 미리 전부 더하고 비교하기 +pop()★ (0) | 2022.12.16 |
3진법 뒤집기★★→int('숫자문자열', n진수):n진수를 10진수로 전환 (0) | 2022.12.16 |
이상한 문자 만들기★★ - 이중 for문으로 긴 문장 한글자씩 접근하기 + idx변수를 이용한 인덱스 통제 + 문자열 합치기 (0) | 2022.12.16 |