옹알이(2)

최민수·2023년 3월 4일
0

알고리즘

목록 보기
28/94
def solution(babbling):
    answer = 0

    # 서로 다른 단어 조합 가능, 연속 불가
    words = [["a", "y", "a"], ["y", "e"], ["w", "o", "o"], ["m", "a"]]

    for items in babbling:
        item, prev = [], []
        for i in items:
            item.append(i)
            if len(item) >= 2 and item in words:
                if prev and item == prev:
                    continue
                prev = item
                item = []

        # 발음 할 수 있는 단어
        if len(item) == 0:
            answer += 1
    return answer
  • 알파벳을 한개씩 통과시키면서, 패턴이 맞는 단어를 만나면 지우는 풀이.
  • prev를 저장시키고 비교하는 과정이 있어야 함.

다른 사람의 풀이

  • 연속된 단어를 처리하는 로직이 내 풀이보다 더 나은 풀이라 생각됨.
  • 스트링의 replace 메서드에서 바꿀 단어가 없으면 그냥 아무 일 없이 스무스하게 지나간다는 사실도 처음 알게 됨.
⭐️
def solution(babbling):
    answer = 0
    for i in babbling:
        for j in ['aya','ye','woo','ma']:
            # 연속 발음 체크
            if j*2 not in i:
                # 없으면 스무스하게 지나감
                i=i.replace(j,' ')
        if len(i.strip())==0:
            answer +=1
    return answer

출처: 프로그래머스 연습문제, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글