[프로그래머스]level2-모음사전-Python[파이썬]

s2ul3·2022년 10월 25일
0
post-custom-banner

문제링크

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

문제설명

알고리즘

  1. 알파벳 A, E, I, O, U로 만들 수 있는 길이가 5인 모든 문자열을 dict_list에 담는다.
  • 이는 itertools의 product 함수를 사용하여 문자열을 구한다.

product 함수: 중복을 포함한 순열 출력 (중복 o, 순서 o)

  • ex) product(iterator, repeat = 1) : iterator에서 만들 수 있는 길이가 1인 문자열 (중복 포함)
from itertools import product
iterator = ['A','B','C','D','E']
print(list(product(iterator, repeat = 1)))

결과 : [('A',), ('B',), ('C',), ('D',), ('E',)]

  • ex) product(iterator, repeat = 2) : iterator에서 만들 수 있는 길이가 2인 문자열 (중복 포함)
print(list(product(iterator, repeat = 2)))

결과 : [('A', 'A'), ('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('B', 'D'), ('B', 'E'), ('C', 'A'), ('C', 'B'), ('C', 'C'), ('C', 'D'), ('C', 'E'), ('D', 'A'), ('D', 'B'), ('D', 'C'), ('D', 'D'), ('D', 'E'), ('E', 'A'), ('E', 'B'), ('E', 'C'), ('E', 'D'), ('E', 'E')]

--> alpha_list에서 중복 포함 순열 1개 뽑기 ... 5개 뽑기

for i in range(1, 6): # alpha_list에서 중복 포함 순열 1개뽑기 ... 5개뽑기  
    pr_results = pr(alpha_list, repeat = i)
  1. 각 결과는 튜플 형태로 나오는데 이를 join함수를 사용하여 string으로 바꿔주고
    결과 문자열들을 담는 리스트인 dict_list에 담는다.
	for r in pr_results: # r : ('A', 'A')
        dict_list.append(''.join(r)) # dict_list = ['AA']
  1. 모든 문자열들을 담은 리스트 dict_list를 오름차순으로 정렬
  2. dict_list에서 우리가 찾고자 하는 문자열 word가 몇번째 위치에 있는지 index 함수를 사용하여 반환

코드

from itertools import product as pr
def solution(word):
    alpha_list = ['A', 'E', 'I', 'O', 'U']
    dict_list = []
    for i in range(1, 6): # alpha_list에서 중복 포함 순열 1개뽑기 ... 5개뽑기  
        pr_results = pr(alpha_list, repeat = i)
        for r in pr_results: # r : ('A', 'A')
            dict_list.append(''.join(r)) # dict_list = ['AA']
    dict_list.sort()
    return dict_list.index(word) + 1
profile
statistics & computer science
post-custom-banner

0개의 댓글