[프로그래머스] 옹알이(1)

융쬬·2024년 5월 3일

Algorithm

목록 보기
15/24

문제 바로가기

https://school.programmers.co.kr/tryouts/85889/challenges

 

💡 문제 요약

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

ex)

babblingresult
["aya", "yee", "u", "maa", "wyeoo"]1
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]3
  • 입출력 예 #1

    • ["aya", "yee", "u", "maa", "wyeoo"]에서 발음할 수 있는 것은 "aya"뿐입니다. 따라서 1을 return합니다.
  • 입출력 예 #2

    • ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]에서 발음할 수 있는 것은 "aya" + "ye" = "ayaye", "ye", "ye" + "ma" + "woo" = "yemawoo"로 3개입니다. 따라서 3을 return합니다.

 

💡 알고리즘 설계

  • 머쓱이가 할 수 있는 발음: words = ["aya", "ye", "woo", "ma"]

  • 주어진 babbling을 단어 하나씩 돌면서 words에 있는 단어들을 공백 처리해준 후, 남은 단어가 없는 요소가 몇 개인지 세어준다.

    • 단어를 공백으로 처리하는게 아니라 아예 제거할 경우, bab의 중간에 word가 껴있을 때 word의 앞/뒤 철자가 합쳐져서 다음 word를 형성하는 경우가 생김.

      ex) 만약 공백으로 처리할 경우,

      “wyeoo”에서 ‘ye’를 제거하면 그 다음 word인 “woo”가 되어버리며, 이 단어까지 발음할 수 있는 단어의 갯수에 포함되어버린다.

    • 그렇기 때문에 for문 안에서는 우선 공백으로 처리해준 후, 하나의 bab에 대하여 word를 모두 비교하는 작업이 끝난 뒤에 공백을 제거한 다음, bab의 길이가 0인 경우 정답 갯수를 하나 추가해준다.

 

💡 내 코드

def solution(babbling):
    answer=0
    words = ["aya", "ye", "woo", "ma"]
    
    for bab in babbling:
        for word in words:
            bab = bab.replace(word, " ")
            
        bab = bab.replace(" ", "")
        if len(bab) == 0:
                answer+=1
            
    return answer

 

💡 오답노트

  • 처음에는 [공백으로 처리 → 공백 제거]가 아니라 그냥 아예 제거를 하려고 해서 조금 헤맸다..
profile
영어공부 하는 Computer Scientist

0개의 댓글