코딩테스트
[프로그래머스] 옹알이1 파이썬
_maddy
2023. 10. 9. 19:38
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
옹알이 할 수 있는 단어는 ["aya", "ye", "woo", "ma"] 뿐, 이 4단어의 조합으로 만든 단어는 옹알이 할 수 있다. 즉 ayaye, ayawoo도 옹알이 할 수 있다. 주어진 babbling 리스트의 각 문자열에서는 "aya", "ye", "woo", "ma"가 한 번씩만 등장한다.
내가 이해한 바로는 ayaaya도 안되고, ayayeayaye도 안되는 것으로 이해하였다. 주어진 리스트 내 단어에서 발음할 수 있는 단어의 개수를 세어보자.(근데 코드 돌려보면 ayayeayaye 과 같은 경우 고려하지 않아도 통과됨;)
내가 생각한 방법은 3가지이다.
방법 1. 주어진 리스트 내 단어를 하나씩 검토하며 지워나가기, 반복될 시 다음 배열로 넘어가기.
방법 2. 미리 옹알이 할 수 있는 단어를 조합해 말할 수 있는 단어 리스트를 만들어놓은 후 일치하는지 체크하기.
방법 3. 미리 단어 반복 체크 후 2번이상 옹알이 단어가 들어가면 리스트에서 * 로 바꾸고 나중에 체크할 때 제외될 수 있도록 하기.
나는 방법 2을 택했다.
def solution(babbling):
count=0
cnt=0
for i in range(len(babbling)):#반복되는 단어 발견 시 *로 바꾸기
for j in ['aya','ye','woo','ma']:
count=babbling[i].count(j)
if count>1:
babbling[i]='*'
break
for word in babbling:#옹알이 단어에 해당되면 ' ' 으로 바꾸기
for i in ['aya','ye','woo','ma']:
word=word.replace(i,' ')
if word!='*' and len(word.strip())==0:#*이 아니면서 strip 처리한 후 길이가 0인 것들만 count
cnt+=1
return cnt
😱주의할 점😱
1. ayaaya 만 안되는 게 아니라 ayayeaya 같은 경우도 안됨.
근데 이 경우 따지지 않아도 프로그래머스에서 맞게 처리하고 있다; 왜지