728x90
320x100
페어프로그래밍 - 알고리즘 문제풀이
https://school.programmers.co.kr/learn/courses/30/lessons/155652
def solution1(s, skip, index):
answer = ''
# 모든 알파벳
alphabet = 'abcdefghijklmnopqrstuvwxyz' # z를 넘어가면 다시 a부터 시작: 알파벳 바꿔주는 과정에서 처리
# s가 문자열이고, alphabet 문자열도 정의해줬으니까 인덱스를 사용해볼까?
# 문자열 s의 각 알파벳을 index 만큼 뒤의 알파벳으로
# skip에 있는 애들 먼저 없애버리기!
for i in skip:
alphabet = alphabet.replace(i,"" )
# s 안에서 하나씩 돌면서 문자열 바꿔주는 작업 하기!
for j in s:
# 알파벳을 바꿔주기 -> 인덱스를 먼저 찾기
new_j = alphabet[(alphabet.index(j)+index)%len(alphabet)] # z를 넘어가면 다시 a부터 시작
answer += new_j
return answer
다른 사람의 풀이
set형 사용
from string import ascii_lowercase
def solution(s, skip, index):
result = ''
a_to_z = set(ascii_lowercase)
a_to_z -= set(skip)
a_to_z = sorted(a_to_z)
l = len(a_to_z)
dic_alpha = {alpha:idx for idx, alpha in enumerate(a_to_z)}
for i in s:
result += a_to_z[(dic_alpha[i] + index) % l]
return result
아스키코드 변환함수 사용
def solution(s, skip, index):
alphas = [chr(a) for a in range(ord("a"), ord("z")+1) if chr(a) not in skip]
return "".join([alphas[(alphas.index(a) + index) % len(alphas)] for a in s])
ord? - 아스키코드(유니코드)를 변환하는 함수
ord(문자)
어떤 하나의 문자열이 주어지면 해당 문자의 유니코드 코드 포인트를 나타내는 정수를 반환한다.
ex
ord('a') 👉 97
ord('€') (유로 기호) 👉 8364
ord('야') 👉 50556
chr(정수)
유니코드 코드 포인트가 해당 정수인 문자를 나타내는 문자열을 반환한다.
ex
chr(97) 👉 문자열 'a'
chr(8364) 👉 문자열 '€'
0504 팀회의
300x250
반응형
GitHub 댓글