https://school.programmers.co.kr/learn/courses/30/lessons/84512
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사항- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
입출력 예wordresult
"AAAAE" | 6 |
"AAAE" | 10 |
"I" | 1563 |
"EIO" | 1189 |
입출력 예 #1
사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA", "AAA", "AAAA", "AAAAA", "AAAAE", ... 와 같습니다. "AAAAE"는 사전에서 6번째 단어입니다.
입출력 예 #2
"AAAE"는 "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAE", "AAAAI", "AAAAO", "AAAAU"의 다음인 10번째 단어입니다.
입출력 예 #3
"I"는 1563번째 단어입니다.
입출력 예 #4
"EIO"는 1189번째 단어입니다.
파이썬 itertools의 중복순열(product) 기능을 이용했습니다.
먼저, 중복순열로 A,E,I,O,U의 모든 경우의 수를 만들어놓고, 사전순 정렬을 통해서 입력 문자열과 같은 것을 찾는 방법으로 진행했습니다.
문자열의 경우 list(문자열)을 하면 글자단위로 쪼개지며, 이를 중복순열에서 요소를 다루는 방식과 같게 튜플로 변경해줬습니다.
이후 반복문을 통해 정렬된 경우의 수 리스트 내에서 찾아주면 됩니다.
코드
#프로그래머스 84512 모음사전
from itertools import product
def solution(word):
answer = 0
arr = ['A', 'E', 'I', 'O', 'U']
result = tuple(list(word))
count = 1
lst = []
for j in range(1,6):
for i in product(arr, repeat=j):
lst.append(i)
lst.sort()
for i in lst:
if result==i:
answer = count
break
count += 1
return answer
print(solution("AAAAE"))
'알고리즘 풀이 > Python' 카테고리의 다른 글
[Python] Sum (SWEA 1209번 파이썬) (0) | 2023.10.29 |
---|---|
[Python] 적록색약 (백준 10026번 파이썬) (0) | 2023.10.27 |
[Python] Magmetic (SWEA 1220번 파이썬) (0) | 2023.10.26 |
[Python] 토마토 (백준 7569번 파이썬) (1) | 2023.10.26 |
[Python] 뒤집기 (백준 1439번 파이썬) (0) | 2023.10.18 |