본문 바로가기
IT

[레벨0] 옹알이(1)

by 자비단 2022. 12. 19.
반응형

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

내가 제출한 답은 아래와 같다.

def solution(babbling):
    answer = 0
    words = ["aya", "ye", "woo", "ma"]
    for bab in babbling:
        repeat = len(words) # words 갯수 만큼 반복
        for _ in range(repeat):
            for word in words:
                if bab.startswith(word): 
                    bab = bab[len(word):] # word로 시작하면 그 부분을 제거

                    if bab == "": 
                        answer += 1 # 모든 문자열이 제거되면 카운트 1업
                        break
    return answer

replace를 사용하면 "wyeoo"와 같이 처음에 ye를 replace하고 그 다음에 남은 woo를 replace해버리는 문제가 발생한다. startswith로 먼저 단어가 들어있는 지 확인한 후 있으면 if문으로 단어를 제거했다.

이 단계를 "aya", "ye", "woo", "ma"에 대해 거치면 반복 1회가 끝난다.

 

만약 babbling에 "mawooyeaya"가 주어지면 처음에 ma가 없어져서 "wooyeaya"가 남는다.

그러므로 이러한 과정을 words의 갯수만큼 반복해주면 "mawooyeaya"의 경우 마지막에 ""만 남길 수 있다.

 

만약 "ayayewooma"가 있으면 첫 iteration에서 answer가 +1되어 나머지 3번의 iteration은 쓸데없이 돌리게 되는 단점이 있지만, 시간 관계 상 수정은 다음 기회에 해야겠다.

 

오랜만에 문제풀이를 하는데, 난이도 0 문제에서 시간이 오래 걸려서 자괴감을 느꼈다.

문제를 다시 한 번 자세히 읽어보니, words의 단어가 최대 1번씩만 나온다는 조건을 확인하였다.

이 조건이 많은 제약을 걸어 바로 문제를 풀 수 있었다.

이 문제의 출제 의도는 "문제를 꼼꼼히 읽어라" 아닐까 싶다.

 

 

반응형

'IT' 카테고리의 다른 글

[레벨2] 모음사전  (0) 2023.05.05
[레벨2] 게임 맵 최단거리  (0) 2023.05.04
iOS 14 베타 버전 설치하기  (0) 2020.06.29
일본에서 미국 직구하기 (3) 세금  (2) 2020.06.16
일본에서 미국 직구하기 (2) 배대지 찾기  (4) 2019.12.07

댓글