문제
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling 이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
조건
1. 1 ≤ babbling의 길이 ≤ 100
2. 1 ≤ babbling[i]의 길이 ≤ 15
3. babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
4. 문자열은 알파벳 소문자로만 이루어져 있습니다.
내 코드
def solution(babbling):
result = 0
for i in babbling:
tmp = i.replace('aya','1').replace('ye','2').replace('woo','3').replace('ma','4')
if tmp.isdecimal() and (tmp.count('1')==0 or 1) and (tmp.count('2')==0 or 1) and (tmp.count('3')==0 or 1) and (tmp.count('4')==0 or 1):
result+=1
return result
풀이
문자열을 받아와 조건과 일치하는 문자들을 Replace를 통해 숫자로 대치하였다. 그 결과 모두 숫자인 값들 중에, 한 번만 쓰였거나 아예 안 쓰인 경우에만 카운팅을 해주었다. replace와 isdecimal() 메소드가 본 문제의 키포인트인 듯 하다.
근데 어떻게 이 문제가 레벨 0...?
문제 출처 프로그래머스 - 옹알이 1
https://school.programmers.co.kr/learn/courses/30/lessons/120956