728x90
반응형
from itertools import product
def solution(word):
answer = 0
word_list = generate_words()
word_list.sort() # 사전순 정렬
for i, w in enumerate(word_list):
if w == word :
answer = i + 1
return answer
def generate_words():
char_list = ['A', 'E', 'I', 'O', 'U']
words = []
for length in range(1, 6): # 1부터 5까지 길이의 문자를 만들 것임
for p in product(char_list, repeat=length): # repeat: 반복 횟수 -> 길이가 length인 조합을 생성함
word = ''.join(p) # 문자열 결합
words.append(word) # 배열에 추가
return words
1. generate_words 함수에서 총 5가지의 문자로 만든 문자열 조합을 생성한다.
2. 이중 반복문을 이용하는데 먼저 1~5 길이의 문자열 조합을 모두 구해야하기 때문에 가장 외부의 반복문 범위는 range(1, 6)이 된다. 이렇게 함으로써 길이가 1인 문자열부터 길이가 5인 문자열을 구할 수 있게 된다.
3. 이중 반복문 중 내부 반복문에서는 product 라이브러리를 사용해서 가능한 조합을 만든다.
4. product(char_list, repeat=length): 여기서 repeat은 반복 횟수 즉 길이가 length인 조합을 생성하게 되는 것이다.
5. 내부 반복문에서 join을 통해 딕셔너리를 문자열로 바꾸고 반환할 배열인 words에 추가한다.
6. 메인 함수 solution으로 가서 사전순으로 정렬한 다음 파라미터로 받은 (문제에서 제시된 입력값) 문자와 동일한 문자의 인덱스를 enumerate를 통해 반환한다.
728x90
반응형
댓글