https://school.programmers.co.kr/learn/courses/30/lessons/155652
풀이 - 나의 생각
a ~ z까지의 값을 구하는 방법은 두가지가 있습니다.
1. 아스키값으로 구하기
2. string.ascii_lowrcase 사용하기
1. 아스키값으로 구하기
소문자 a의 아스키코드는 97, z는 122입니다.
그래서 97부터 122까지의 돌면서 리스트에 저장하면
a ~ z까지를 구할 수 있습니다.
2. string.ascii_lowercase 사용하기
단순합니다.
from string import ascii_lowercase
stringAlpabet = ascii_lowercase # 출력 : abcdefg-----------wxyz
listAlphabet = list(ascii_lowercase) # 출력 : ['a','b','c','d' ------ , 'w','x','y','z']
이런 식으로 필요한 자료형으로 사용하면 됩니다.
또한
from string
stringAlphabet = string.ascii_lowercase # 출력 : "abcde----wxyz"
이렇게도 됩니다.
풀이 방법은
일단 위처럼 알파벳 리스트를 구한 후
skip에 해당하는 알파벳을 제거하고
주어진 문자열(s)의 요소를
알파벳 리스트에서 위치를 찾은 후
주어진 index 뒤의 값들을
하나씩 찾아가면 됩니다.
그 알파벳 리스트를 구하는 방식이 두가지가 있는데
1. for문 사용
range(97, 123) 만큼 반복문을 돌면서
not in skip으로 조건문을 돌려
skip에 해당하는 경우는 패스하고, 나머지는 저장합니다.
alphabet = [chr(i) for i in range(97, 123) if chr(i) not in skip]
2. set 사용
set의 차집합을 이용합니다.
ascii_lowercase을 set으로 전환하고
skip도 set으로 전환해서
차집합을 구합니다.
alphabet = set(ascii_lowercase) - set(skip)
이후는 동일합니다.
for alp in s:
idx = alphabet.index(alp)
answer += alphabet[(idx+index)%size]
현재 위치에 + index 한 값에
skip 해야하는 알파벳을 제거한 리스트 사이즈의 나머지 값이
찾는 위치가 됩니다.
그 값들을 하나씩 저장하면 정답을 구할 수 있습니다.
코드
def solution(s, skip, index):
answer = ''
alphabet = [chr(i) for i in range(97,123) if chr(i) not in skip]
size = len(alphabet)
for alp in s:
idx = alphabet.index(alp)
answer += alphabet[(idx+index)%size]
return answer
from string import ascii_lowercase
def solution(s, skip, index):
answer = ''
alphabet = sorted(set(ascii_lowercase) - set(skip))
size = len(alphabet)
for alp in s:
idx = alphabet.index(alp)
answer += alphabet[(idx+index)%size]
return answer
'프로그래머스 > Lv.1' 카테고리의 다른 글
Summer/Winter Coding(~2018) > 예산 - Python, 바다코끼리 연산자(Walrus Operator) (2) | 2024.11.16 |
---|---|
2022 KAKAO BLIND RECRUITMENT > 신고 결과 받기 - Python, defaultdict, set, defaultdict 없이 초기화하기 (1) | 2024.11.16 |
대충 만든 자판 -Python, defaultdict, 구현 (1) | 2024.11.15 |
2020 카카오 인턴십 > 키패드 누르기, 구현, abs (0) | 2024.11.15 |
기사단원의 무기 - Python, 약수 찾기 (0) | 2024.11.14 |