(프로그래머)연습 > 옹알이 (1)

문제 설명

그녀는 6개월 된 조카를 돌보고 있습니다.

내 조카는 “아야”, “예”, “우”, “마” 네 가지 소리의 조합(조인)을 최대 한 번만 발음할 수 있습니다.

문자열 배열 옹알이가 매개변수로 주어지면 solve 함수를 완성하여 조카가 발음할 수 있는 단어의 수를 반환합니다.


제한

  • 1 ≤ 옹알이 길이 ≤ 100
  • 1 ≤ 옹알이 길이(i) ≤ 15
  • 각 옹알이 시퀀스에서 “aya”, “ye”, “woo” 및 “ma”는 각각 최대 한 번씩 나타납니다.

    • 즉, 각 문자열의 가능한 모든 하위 문자열 중에서 “aya”, “ye”, “woo” 및 “ma”는 한 번만 나타납니다.

  • 문자열은 모두 소문자로 구성됩니다.


I/O 샘플 옹알이 결과

(“아야”, “예이”, “유”, “마”, “위오”) 하나
(“아야예”, “uuuma”, “예”, “예마우”, “아야”)

I/O 예시 설명

I/O 예제 #1

  • (“aya”, “yee”, “u”, “maa”, “wyeoo”) “aya”만 발음할 수 있습니다.

    그래서 1을 반환합니다.

I/O 예제 #2

  • (“ayaye”, “uuuma”, “ye”, “yemawoo”, “ayaa”)는 “aya” + “ye” = “ayaye”, “ye”, “ye” + “ma” + “로 발음될 수 있습니다.

    우” = “예마우”, 3개입니다.

    따라서 3을 반환합니다.


메모

  • 4가지를 더해서 할 수 있는 발음 외에는 어떤 발음도 할 수 없도록 규정하고 있다.

    예를 들어 “woowo”는 “woo”는 발음할 수 있지만 “wo”는 발음할 수 없기 때문에 발음할 수 없습니다.


(설명)

옹알이 목록을 만든 후 각 옹알이 단어는 최대 한 번 발생하므로

bab_list() 함수를 만들어 단어에서 중얼거리는 단어를 제거하여 남은 단어가 있는지 확인합니다.

대신 ay woo a와 같은 중간 단어는 삭제할 때 제거되고, 비단어도 걸러질 수 있으니 이 부분에 주의하면서 코드를 작성하는 것이 중요할 것 같습니다.

대신에 bab_list에 특화되어 일반화하기 힘든 코드입니다 하헤헤

요약하다

  • bab_list : babble 목록
  • find_bab: 특정 단어 내 옹알이 검색
def solution(babbling):
    answer = 0
    bab_list = ("aya", "ye", "woo", "ma")

    def find_bab(bab_list, bab):
        for ba in bab_list:
            if ba in bab(:len(ba)):
                bab = bab(len(ba):)
            elif ba in bab(-len(ba):):
                bab = bab(:len(bab)-len(ba))
        return bab

    for bab in babbling:
        while(1):
            tmp = find_bab(bab_list, bab)
            if (bab == tmp):
                break
            else:
                if tmp == '':
                    answer += 1
                    break
                elif len(tmp) < 2:
                    break
            bab = tmp
    return answer