728x90
https://school.programmers.co.kr/learn/courses/30/lessons/84512
일단 문제는 위 링크를 참고하시면 됩니다~
문제 설명을 하기 앞서 해당 코드는 굉장히 효율성에서 떨어진다는 것을 강조하고 설명들어가도록 하겠습니다~

생각한 알고리즘
0. 단어의 길이가 최대 5까지 될 수 있고, 같은 문자 5개가 들어가는 경우도 있으므로
각 원소에 대해 5개씩 문자열에 넣었다.
1. 단어의 길이가 i+1 (1 ~ 5)인 것들 생성(list(itertools.permutations(alphabet, i+1)) 이용)
2. tuple 형태로 저장되니 map(lambda x: x ~~ )를 이용하여 1) list, 2) ''.join() 순으로 변환
3. for문에서 계속 추가하기
4. 중복되는 값이 있을 수 있으니 set을 이용하여 중복값 제거, list로 저장
5. sort()를 이용하여 모든 경우의 수가 담긴 printList를 사전순으로 정렬
6. printList에서 word를 원소로 가지는 인덱스에다가 1을 더하여 출력
*1, 2에 대해서 자세히 알고싶다면 https://declare0703.tistory.com/92 의 1-1),2) 설명을 참고하시면 됩니다!
import itertools
def solution(word):
alphabet="AAAAAEEEEEIIIIIOOOOOUUUUU"
answer = 0
printList=[]
for i in range(5):
temp = list(itertools.permutations(alphabet, i+1)) #1
tmp = map(lambda x: ''.join(list(x)), temp)#2
lst = list(tmp)
printList = printList + lst #3
printList = list(set(printList)) #4
printList.sort() #5
return printList.index(word)+1 #6'코딩' 카테고리의 다른 글
| 프로그래머스 - 코딩테스트 고득점 Kit - 완전탐색 - 전력망을 둘로 나누기(python) (0) | 2023.02.02 |
|---|---|
| 프로그래머스 - 코딩테스트 고득점 Kit - 완전탐색 - 피로도 (python) (0) | 2023.02.01 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 완전탐색 - 카펫 (python) (0) | 2023.02.01 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 완전탐색 - 소수 찾기 (python) (0) | 2023.02.01 |
| 프로그래머스 - 코딩테스트 고득점 Kit - 완전탐색 - 모의고사 (python) (0) | 2023.01.31 |