본문 바로가기

알고리즘풀이/프로그래머스

옹알이 (1)

👉 사용 언어 : PYTHON3

 

✅ Solution

def solution(babbling):
    answer = 0
    for i in babbling:
        for j in ["aya", "ye", "woo", "ma"]:
            if j in i:
                i = i.replace(j, ' ')
        i = i.replace(' ','')
        if i == '':
            answer += 1
    return answer

 

👉 아이디어

  • 중첩 for문을 돌려
    • babbling 배열의 각 원소에 말할 수 있는 발음이 존재하는지 비교한다.
    • 각 원소에 가능한 발음이 존재하면 해당 발음을 ' '으로 치환한다.
    • 제한사항에 각 발음은 최대 한 번씩만 등장한다고 하였으므로 ["aya", "ye", "woo", "ma"]는 한 번만 순회한다.
  • 모두 가능한 발음으로 이루어져있는지 확인하기 위해 ' '을 다시 ''로 치환한다.
  • 그 후, 치환한 값이 ''인 경우에는 머쓱이의 조카가 발음할 수 있는 단어의 개수를 +1 한다.

 

 다른 사람 풀이 참고

import re

def solution(babbling):
    regex = re.compile('^(aya|ye|woo|ma)+$')
    cnt=0
    for e in babbling:
        if regex.match(e):
            cnt+=1
    return cnt

 

👉 깨달은 것 / 알게된 것

  • 정규표현식을 사용하여 풀이할 수 있다.
  • re.compile을 사용하여 정규 표현식(위 예에서는 ^(aya|ye|woo|ma)+$)을 컴파일한다.
  • 리턴값을 객체 regex(컴파일된 패턴 객체)에 할당한다.
    • 패턴 이란❓ 정규식을 컴파일한 결과❗️
  • match 메서드
    • 문자열의 처음부터 정규식과 매치되는지 조사한다.
    • 부합되지 않을 경우, None을 리턴하며 부합되는 경우, match 객체를 리턴한다.
    • babbling 배열에서 꺼낸 문자열과 regex 정규식과 부합되는지 확인 후, 부합되면 카운트변수 +1을 한다.