728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/155652
스킵할 알파벳 제외 인덱스만큼 뒤의 알파벳으로 바꿔서 문자열로 리턴
chr() ord() 사용
chr(정수) -> 아스키코드 문자로 바꿔줌
ord(문자) -> 아스키코드 숫자로 바꿔줌
ord('a') #97
ord('z') #122
ord('A') #65
ord('Z') #90
#26개가 있음
a~z까지 아스키코드 숫자를 넣은 리스트 만들기
set() - set() 를 이용한 차집합
+ set를 이용한 집합 연산(and or 불가능)
합집합(세트1, 세트2에 있는 것 모두): |
교집합(세트1, 세트2 둘 다에 있는 것): &
차집합: - 혹은 세트1.difference(세트2)
set([a~z까지 아스키코드 숫자를 넣은 리스트]) - set([skip에 있는 문자를 숫자로 바꾼 리스트])
def solution(s, skip, index):
answer = ''
# a~z까지 아스키코드 숫자로 바꾼 값을 리스트 al에 저장
al = set([c for c in range(ord('a'), ord('z')+1)])
skip = set([ord(c) for c in skip])
al = list(al-skip) #차집합 이용
for i in s:
#인덱스 찾기
idx = al.index(ord(i)) + index
if idx >= len(al):
#idx % len(al)
idx = idx % (len(al))
answer+=chr(al[idx])
return answer
'코딩테스트 문제' 카테고리의 다른 글
[프로그래머스/Python] 시저 암호 (0) | 2024.01.11 |
---|---|
[프로그래머스/Python] 신고 결과 받기 (0) | 2024.01.11 |
[프로그래머스/Python] 문자열 밀기 (0) | 2024.01.05 |
[프로그래머스/Python] k의 개수 (0) | 2024.01.05 |
[프로그래머스/Python] 369 게임 (0) | 2024.01.05 |