프로그래머스

[프로그래머스]모음사전

진철 2023. 2. 6. 22:43
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드를 작성하기 위한 순서는 다음과 같다.

1. A, E, I, O, U 순서대로 리스트를 하나 만들어준다.

2. 문자를 하나하나 붙인 뒤, 재귀호출을 통하여 word와 같으면 True를 반환하고 그렇지 않으면 다른 문자를 붙이고를 반복하는 dfs함수를 만들어준다.

3. dfs 함수를 한 번 호출할 때마다 answer+1을 해주고 word와 같다면 answer를 반환한다.

def solution(word):
    global answer
    answer = 0
    moeum=['A','E','I','O','U'] #1번
    def dfs(string): #2번
        global answer
        answer+=1 #3번
        if string==word: #원하는 단어와 같으므로 True를 반환한다.
            return True
        if len(string)==5: #원하는 단어와 다르고 원하는 단어의 길이가 5이므로 더 이상 볼 필요가 없다. 따라서 False를 반환한다.
            return False
        for i in moeum: #단어 리스트와 더해가면서 재귀호출을 해준다.
            if dfs(string+i)==True:
                return True
    for i in moeum:
        if dfs(i)==True: #3번
            return answer

파이썬의 특성상 문자를 더한다면 길이가 합쳐지는 것이기에 재귀호출 함수를 구현하여 문제를 해결하였다.

처음에는 사전순으로 나열했을 때, 1자리면 5가지, 2자리면 5*5가지 등 경우의 수를 계산하여서 문제를 해결하려고 했었다.

해당 방법도 매력적인 방법이지만 해귀호출로 문제를 해결하는 것이 알고리즘 실력에 있어서 더 낫다고 판단하였다.

(그래서 기분이 조금 좋아요 헤헤)

문자열 관련 문제는 다른 언어에 비해서 파이썬이 확실히 편리한 것 같다.

728x90
반응형