본문 바로가기

알고리즘/python

[python/파이썬] 프로그래머스 Lv.1 옹알이 (1)

반응형

[문제출처]

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

 

프로그래머스

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

programmers.co.kr

 

[문제 풀이]

 

✅소스 코드

 

문자열의 리스트가 주어졌을 때, 리스트의 원소 중에서 조카가 발음할 수 있는 문자열의 개수를 세는 문제이다.

 

조카는 "aya", "ye", "woo", "ma" 이렇게 네 가지 발음만 할 수 있으며, 각 발음을 최대 한 번씩 사용해 조합한 발음만 할 수 있다.

예를 들어 "ayaye"는 "aya"와 "ye"가 한 번씩 조합된 것이므로 발음할 수 있지만,

"wooe"는 발음할 수 없는 발음인 "e"가 포함되어 발음하지 못한다.

 

조카가 발음할 수 있는 것들을 a라는 리스트에 저장하고,

주어진 문자열의 원소들을 하나씩 살펴보며 확인한다.

첫 번째 글자부터 살펴보면서 해당 글자가 a에 포함되는지(발음이 가능한지) 확인하고, 아니라면 다음 글자를 붙여서 다시 확인한다.

만일 발음할 수 있는 글자라면 tmp를 빈 문자열로 초기화하고 다음 글자부터 다시 확인한다.

 

이렇게 해서 모든 글자들을 살펴봤을 때, 모두 발음이 가능하다면 tmp는 빈 문자열로 남아있을 것이다. 

빈 문자열일 경우에 answer 값을 증가시키고, 그렇지 않은 경우는 발음을 하지 못하므로 다음 단어로 넘어간다.

def solution(babbling):
    answer = 0
    
    a = ['aya','ye','woo','ma']
    for b in babbling:
        tmp = ''
        for i in range(len(b)):
            tmp += b[i]
            if tmp in a:
                tmp = ''
                           
        if tmp == '':
            answer += 1
                
    return answer
반응형