본문 바로가기
프로그래머스/Lv.1

다른 사람의 풀이 - Python, set, ascii_lowercase

by 아찌방 2024. 11. 15.

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/155652

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

풀이 - 나의 생각

 

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

 

 

 

 

 

 

다음에 또 봐요

 

728x90