풀이 1
from itertools import product
def solution(word):
answer = 0
words = ['A', 'E', 'I', 'O', 'U']
ans_lst = []
for i in range(1, len(words) + 1):
for j in product(words, repeat = i):
ans_lst.append(''.join(list(j)))
ans_lst.sort()
answer = ans_lst.index(word) + 1
return answer
itertools 모듈의 product 함수(중복순열)를 사용.
해당 된 모음들의 모든 순열을 구한 뒤 정렬하여 인덱스를 통해 위치를 찾아준다.
풀이 2
def solution(word):
global answer
answer = 0
alphas = ['A', 'E', 'I', 'O', 'U']
def dfs(result):
global answer
answer += 1
if result == word:
return True
if len(result) == 5:
return False
for alpha in alphas:
if dfs(result + alpha) == True:
return True
for alpha in alphas:
if dfs(alpha) == True:
return answer
return answer
재귀를 사용 한 풀이. 재귀는 질문하기의 도움을 받아 풀이했다. 반복문을 통해 각 알파벳을 순회시키고, 길이가 5가 되면 리턴을 해주고 그 전 재귀로 돌아가 문자열을 추가하는 방식. 재귀는 볼때마다 헷갈린다.
'Programmers' 카테고리의 다른 글
[프로그래머스 / 파이썬 풀이] 네트워크 (0) | 2023.01.09 |
---|---|
[프로그래머스 / 파이썬 풀이] 게임 맵 최단거리 (0) | 2023.01.09 |
[프로그래머스 / 파이썬 풀이] 피로도 (0) | 2023.01.05 |
[프로그래머스 / 파이썬 풀이] 카펫 (0) | 2023.01.05 |
[프로그래머스 / 파이썬 풀이] 소수 찾기 (0) | 2023.01.04 |