본문으로 바로가기
728x90
반응형

Description

https://jakpentest.tistory.com/228d

 

[Programmers] 옹알이

Description 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babb

jakpentest.tistory.com

에서 다른 해결 방법은 없을까 생각해서 시도하게 되었다.

 

풀이 방법

위에 첨부한 링크 내용 중에서도 알 수 있듯 문제를 처음 풀었을 때는 단순하게 가능한 모든 경우의 수를 고려하고 그 안에서 매칭 되는 게 있으면 counter를 올리는 방식으로 풀었다. 이 풀이 방법은 단순하고 직관적이라 생각했는데 공간을 너무 낭비한다는 게 단점이었다. 더 나은 솔루션은(사실은 다른 풀이를 보고 참고했다.) 받아들인 문자열을 재귀적으로 삭제하면서 길이가 0일 될 때 카운트를 올려주는 방식으로 풀어 나가는 것이었다.

즉 다음과 같다.

만약 'ayaye'에서 발음할 수 있는 단어의 개수를 카운팅 하는 것이라면 문제에서 주어진 순서인 다름 리스트를 순회하면서 삭제해주면 되는 것이다.

["aya", "ye", "woo", "ma"]

 즉 하나의 문자열에 필터링 가능한 문자를 계속 적용하는 방식이다.

 

Code

def solution2(babbling):
    enables = ["aya", "ye", "woo", "ma"]

    counter = 0
    for babble in babbling:

        for enable in enables:
            babble = babble.replace(enable, " ").strip()
            if len(babble) == 0:
                counter += 1
                break

    return counter

 


처음 풀었을 때 보다 각 테스트 케이스에서 성능이 향상되었다.

728x90
반응형