문제
https://school.programmers.co.kr/learn/courses/30/lessons/84512
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
위 문제는 중복 순열을 활용해주어야 하는 문제입니다.
문제를 살펴보면 A, E, I, O, U 만을 활용하여 만들 수 있는 크기가 6 이하인 모든 단어를 구해주어야 하는 것을 알 수 있습니다.
또한, 주어진 입력 예제를 보았을 때, AAAAE는 6을 리턴하므로, A - AA - AAA - AAAA - AAAAA 다음에 위치하는 것을 알 수 있습니다.
따라서, 순서를 고려하여 뽑아야 하고, 중복을 허용하여 뽑는 경우이므로, 이는 중복수열임을 알 수 있습니다.
(파이썬에서는 itertools 모듈의 product를 활용하여 중복순열을 구해줄 수 있습니다.)
또한, 모든 경우의 수가 오름차순 정렬된 것을 보장해주어야 하기 때문에 내장함수를 활용해 정렬해줍니다.
Python
from itertools import product
def solution(word):
answer = 0
alphabet = ['A', 'E', 'I', 'O', 'U']
candidates = []
for i in range(1,6):
for j in product(alphabet, repeat = i):
candidates.append(list(j))
candidates.sort()
return candidates.index(list(word)) + 1
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] lv2. 테이블 해시 함수 - Python (0) | 2023.06.08 |
|---|---|
| [프로그래머스] lv1. 과일 장수 - Python (0) | 2023.06.08 |
| [프로그래머스] lv2. 연속된 부분 수열의 합 - Python (0) | 2023.06.05 |
| [프로그래머스] 2022 KAKAO TECH INTERNSHIP 두 큐 합 같게 만들기 - Python (0) | 2023.05.30 |
| [프로그래머스] 큰 수 만들기 - Python (0) | 2023.03.29 |