[Python] 모음 사전 - 완전탐색

Saemi Min·2023년 2월 23일
0

Programmers Algorithm

목록 보기
22/29
post-thumbnail

Level 2

문제

해당 문제 링크

정답

from itertools import product

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

풀이

레벨 낮은 문제인데도... 못풀었다ㅠㅠ
그래서 다른 사람의 코드를 참고해서 해결했다.

파이썬 라이브러리 함수 product를 이용하여 풀었다!
중복순열 함수를 쓰니 쉽게 풀렸다.
자세한 문법은 아래 설명을 보면 알 수 있다.

ex)
['A', 'E', 'I', 'O', 'U'] 중에
repeat = 1을 하게 되면 ) ['A', 'E', 'I', 'O', 'U']
repeat = 2 )
...

words.append(''.join(list(c)))
: 매개 변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환한다.
:

문법

중복 순열

개념

중복 순열은 일반 순열과는 다르게 선택한 것을 다시 제자리에 돌려 놓고(중복) 배열하는 것을 의미한다.

파이썬 product 사용법

product는 permutations와 같이 리스트와 같은 inertable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우를 계산한다.
다만 원소를 중복하여 뽑는다.
product 객체를 초가화할 때는 뽑고자 하는 데이터의 수를 repeat 속성값으로 넣어준다.
product는 클래스이므로 객체 초기화 이후에는 리스트 자료형으로 변환하여 사용한다.

from itertools import product
data = ['사과', '배', '귤']
result = list(product(data, repeat=2))
print(result)
#결과
# [('사과', '사과'), ('사과', '배'), ('사과', '귤'), ('배', '사과'), ('배', '배'), ('배', '귤'), ('귤', '사과'), ('귤', '배'), ('귤', '귤')]

인덱스 찾기 (list.index)

<인덱스 반환(index)>
a = [1,2,3]
a.index(3) #2
a.index(1) #0
profile
I believe in myself.

0개의 댓글