Dia Egg - Shugo Chara

Python공부/프로그래머스

(Python) 옹알이(2) (프로그래머스 Lv.1)/ i = i.replace(j,' ')

별ㅇI 2023. 6. 19. 16:57
728x90
반응형

(Python) 옹알이(2) (프로그래머스 Lv.1)

https://school.programmers.co.kr/learn/courses/30/lessons/133499

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

내 코드

def check(bab):
    n = 0
    cnt = 0
    while(n<len(bab)):
        if cnt != 1 and n+2<len(bab) and bab[n] == 'a':
            if bab[n+1] == 'y' and bab[n+2] == 'a':
                n += 3
                cnt = 1
            else:
                return False
        elif cnt != 2 and n+1<len(bab) and bab[n] == 'y':
            if bab[n+1] == 'e':
                n +=2
                cnt = 2
            else:
                return False
        elif cnt != 3 and n+2<len(bab) and bab[n] == 'w':
            if bab[n+1] == 'o'and bab[n+2] == 'o':
                n+=3
                cnt = 3
            else:
                return False
        elif cnt != 4 and n+1<len(bab) and bab[n] == 'm':
            if bab[n+1] == 'a':
                n+=2
                cnt = 4
            else:
                return False
        else:
            return False
    return True
                
        
def solution(babbling):
    answer = 0
    for bab in babbling:
        if check(bab) == True:
            answer +=1
    return answer

옹알이가 특정 단어로만 이루어질 수 있는지 알아보기 위해서 check라는 함수를 따로 준비했다. 

물론 정답이 나오기는 했는데 너무 길어지고 보기에도 안좋고 해서 베스트 코드를 리뷰해보기로 했다.

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

아하 replace를 쓰면 간단한 문제였다. 그리고 두번 연속으로 안되는 걸 if j*2 not in i로 조건 걸어버린 것이 정말 간단한 방법이구나 기억했다!

728x90
반응형