- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/84512
Lv2. 문제다!
처음에는 내가 문자 규칙을 다 알아낸 다음 주어진 단어에 따라 규칙을 통해 순서를 찾아내는 거라고 생각했다
근데 규칙을 어떻게 찾아야할지 잘모르겠어서 막막했던 문제다
풀이를 보니까 문자 개수가 5개밖에 안되므로 이들로 만들 수 있는 모든 문자열을 만든다음 정렬한 후 해당 단어의 index + 1을 출력하면 된다
product가 뭔지 몰라서 알아봤다
product는 중복 순열을 만들어내는 함수로, 형식은 product(list, reapeat = num)형식으로 하면 list의 원소들 중에서 num 길이 만큼의 중복된 순열을 반환한다
문제 이해
1. 1자리수부터 6자리수 만큼의 주어진 문자들로 중복순열을 만들어 낸 다음 words에 추가한다
2. words에서 주어진 word의 인덱스를 찾고 거기에 +1한 값을 반환한다
- 정답 풀이 :
from itertools import product
# 갯수가 5개이므로 중복순열을 이용해서 가능한 모든 조합을 구한 후 index구한다
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
'프로그래머스 > Level 2' 카테고리의 다른 글
[정렬 / 프로그래머스] 42746번 : 가장 큰 수 (1) | 2022.10.04 |
---|---|
[bfs / 프로그래머스] 1844번 : 게임 맵 최단거리 (0) | 2022.10.03 |
[완전탐색 / 프로그래머스] 87946번 : 피로도(다시) (0) | 2022.09.23 |
[스택,큐 / 프로그래머스] 42584번 : 주식가격 (0) | 2022.09.20 |
[ 스택,큐 / 프로그래머스] 42587번 : 프린터 (0) | 2022.09.19 |