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

 

Lv2. 문제다!

처음에는 내가 문자 규칙을 다 알아낸 다음 주어진 단어에 따라 규칙을 통해 순서를 찾아내는 거라고 생각했다

근데 규칙을 어떻게 찾아야할지 잘모르겠어서 막막했던 문제다

 

풀이를 보니까 문자 개수가 5개밖에 안되므로 이들로 만들 수 있는 모든 문자열을 만든다음 정렬한 후 해당 단어의 index + 1을 출력하면 된다 

 

product가 뭔지 몰라서 알아봤다 

product는 중복 순열을 만들어내는 함수로, 형식은 product(list, reapeat = num)형식으로 하면 list의 원소들 중에서 num 길이 만큼의 중복된 순열을 반환한다 

 

문제 이해 

1. 1자리수부터 6자리수 만큼의 주어진 문자들로 중복순열을 만들어 낸 다음 words에 추가한다 

2. words에서 주어진 word의 인덱스를 찾고 거기에 +1한 값을 반환한다 

 

- 정답 풀이 :

from itertools import product
# 갯수가 5개이므로 중복순열을 이용해서 가능한 모든 조합을 구한 후 index구한다
def solution(word):
    words = []
    for i in range(1, 6):
        for c in product(['A', 'E', 'I', 'O', 'U'], repeat = i):
            words.append(''.join(list(c)))
            
    words.sort()
    return words.index(word) + 1

+ Recent posts