[완전 탐색] 모음 사전 (프로그래머스, Level2)

Soorim Yoon·2022년 10월 10일
0

문제

https://school.programmers.co.kr/learn/courses/30/lessons/84512

  • 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.

  • 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.

입력 예시

풀이

💡 아이디어

해당 문제는 단어 간의 규칙을 찾는 것이 가장 중요했다. 계속해서 규칙을 생각해보다가 막히는 부분이 있었고, 구글링을 통해 보완하였다.

다른 블로그를 참고한 결과, 크게 두 가지 방식으로 문제 풀이가 진행되었다.

  • 1) 수식을 활용한 모음 사전의 규칙 찾기
  • 2) 직접 모음 조합을 통해 모음 사전을 구현한 후, 해당 사전에서 단어의 위치를 찾아 index 번호를 리턴하기

2)의 경우는 해당 문제에서 word의 길이가 최대 5개로, 작은 길이를 가지기 때문에 가능한 방식이다.

📚 참고

1) 의 경우 다음 블로그들에서 규칙 참고를 하였다.
모음사전 풀이 설명(1)
모음사전 풀이 설명(2)

2) 의 경우 다음 블로그를 참고하였다. (설명이 아주 잘 나와있다.)
모음사전 직접 구현

알게된 점

product 라이브러리

본 문제를 2)번 방식으로 구현하면서 product 라이브러리에 대해 알게 되었다.

product([뽑아낼 데이터], repeat=뽑는 개수)

  • product 라이브러리는 위와 같이 사용할 수 있다. 본 문제에서는 product 라이브러리를 통해 뽑아낸 알파벳을 연결해 하나의 단어로 나타냈기 때문에 "".join을 사용해 한 단어로 만들어주었다.

배열.extend()

한 배열의 요소 값들을 다른 배열에 추가할 때 extend()를 사용한다. append()를 사용하면 배열 자체가 다른 배열에 추가되며, extend()를 사용 시 배열의 요소만 추가 가능하다.

total_dict.extend(dictionary)

dictionary 배열의 요소 값들이 total_dict 배열에 추가된다.

코드

코드 구현

✏️ 2번 방식으로 구현한 코드이다.

from itertools import product
def solution(word):
    answer = 0
    
    total_dict = []
    for i in range(1, 6):
        dictionary = list(map("".join, product(['A','E','I','O','U'], repeat = i)))
        total_dict.extend(dictionary)
    
    total_dict.sort()
    for i in range(len(total_dict)):
        if total_dict[i] == word:
            answer = i+1
    return answer

실행 결과

✏️ 1번 방식으로 구현한 코드도 추후 업로드할 예정이다 😊

profile
👩🏻‍💻 AI를 좋아하는 IT학부생

0개의 댓글