본문 바로가기
Algorithm/Accepted

[프로그래머스][옹알이] 재귀를 이용한 풀이

by Baley 2023. 1. 5.

https://school.programmers.co.kr/learn/courses/30/lessons/120956?language=python3 

 

프로그래머스

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

programmers.co.kr

 

문제에 대한 이해:

4개의 문자열로 이루어진 리스트 E가 "aya", "ye", "woo", "ma"가 주어진다.

입력값 리스트 L이 주어졌을 때 L에서 E에 있는 문자열로'만' 이루어진 원소 l이 몇 개인지 구하라.

 

문제풀이:

재귀함수를 이용한다. l은 모두 E에 속한 원소들로만 이루어진 문자열이어야 한다.

따라서 1) 문자열 l의 0번 인덱스부터 'a', 'y', 'w', 'm'으로 시작해야한다.

나의 경우 E의 원소들의 0번째 인덱스가 담긴 ['a', 'y', 'w', 'm']를 따로 만들었다.

조건 1)을 만족하는 원소들은 찾고 시작 문자에 따라 문자열의 길이만큼 슬라이싱해서 일치여부를 가린다.

 그리고 슬라이싱되고 남은 부분의 문자열을 가지고 위 과정을 반복한다.

 

예시코드:

def solution(babbling):
    answer = 0
    words = ["aya", "ye", "woo", "ma"]
    start = ["a", "y", "w", "m"]
    
    def find_word(x):
        nonlocal answer
        for i in range(len(start)):
            start_index = x.find(start[i])
            if start_index == 0:
                if x[start_index:len(words[i])] == words[i]:
                    if x[len(words[i]):] != "":
                        find_word(x[len(words[i]):])
                    elif x[len(words[i]):] == "":
                        answer += 1
                    
                    
    for x in babbling:
        find_word(x)
                        
    return answer

 

 

 

댓글