Growth Hoon

프로그래머스 (Level1) : 옹알이 (1) 본문

Problem Solving/프로그래머스

프로그래머스 (Level1) : 옹알이 (1)

sayhoon 2023. 8. 4. 14:04

내 문제 풀이

def solution(babbling):
    answer = 0
    possible = ['aya','ye','woo','ma']

    for word in babbling:
        target = ''
        for alphabet in word:
            target += alphabet
            if target in possible:
                target = ""

        if target == '':
            answer += 1

    return answer

possible로 아기가 말할수 있는 단어를 넣어 주었다.

이후 babbling으로 단어를 받아 word에 저장을하고 알파벳 하나하나를 다시 분해하여 target변수 넣어준다.

이후 traget이 possible에 있다면 target을 초기화 해준다.

마지막으로 target이 비어있으면 아기가 발음할 수 있는 모든 단어가 있는 것이라 생각하여 answer에 1을 더해주었다.

자료구조로 말해보자면 Queue구조라고 할 수 있지 않을까 싶다.


다른 사람들의 풀이 (Regex 사용)

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

아기가 사용할 수 있는 단어인 aya ye woo ma를 정규표현식으로 바꾸어 주었다.

()로 묶어주고 |를 사용하여 or 기능을 사용해주었다.  {정규표현식을 자세히 몰라 설명이 어렵다 :( }

regex.match(e)는 compile된 "패턴 객체" == regex 를 만족하는 e가 있는지 검색하는 매서드인 듯 하다... 

그렇게 babbling에 있는 단어들이 re.compile에 있는 패턴 단어라면 cnt 에 1을더하고 값을 반환하게 된다.


두 코드의 효율성 확인 (?)

좌측 : 내가 짠 코드  /  우측 : Regex를 이용한 코드

해당 문제의 조건이

 

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 15

였으므로, 내가 짠 코드의 시간이 더 빨라보이지만 테스트 2번의 경우는 더 느리다.

babbling의 속해있는 단어들이 많아지고, 단어의 길이가 길어지면 내 코드의 효율성이 더 빠르게 떨어지지 않을까 싶다.

 

두 코드를 좀 더 일반화 했을 때 어떤 코드가 더 좋은지 알려주시면 감사하겠습니다 :) 

 

'Problem Solving > 프로그래머스' 카테고리의 다른 글

프로그래머스 (Lv3) - 단어 변환  (0) 2024.01.02