알고리즘

[프로그래머스, 파이썬] 옹알이 (2)

hminor 2024. 3. 8. 10:51

풀이

  • 이번 옹알이 문제는 같은 발음을 연속해서 하지 못하는 것 말고는
  • 몇번을 해도 되는 문제였기에
  • 우선 babbling에 있는 단어 bab을 s 위치로 부터 +2, +3 까지 확인 후 
  • 해당 범위의 단어가 baby라는 할 수 있는 발음에 해당 하는지에 대한 조건 분기 처리
  • 여기서 이전의 단어인 bf와 현재 단어가 같다면 탈출할 수 있도록 처리
  • 그리고 baby 단어 목록을 다 탐색해도 맞는 단어가 없는지 체크하는
  • check에 대해서도 조건 처리 하여 해결

 

def solution(babbling):
    result = 0
    baby = ["aya", "ye", "woo", "ma"]
    for bab in babbling:
        s,state,text,bf = 0,False,"",""

        while True:
            check = False
            for word in baby:
                if bab[s:s+2] == word or bab[s:s+3] ==  word:
                    if bf == word:
                        state = True
                        break
                    check = True
                    bf = word
                    text += word
                    s += len(word)

            if not check or state: break

        if bab == text: result += 1
    return result