nueijeel

[프로그래머스][python] Lv.0 - 옹알이 본문

코딩테스트/프로그래머스

[프로그래머스][python] Lv.0 - 옹알이

nueijeel 2023. 2. 8. 17:28

문제 설명

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

해결 단계

1. 조카가 할 수 있는 발음 문자열을 배열 word로 선언한다.

2.  문자열 배열 babbling의 각 문자열에서 word의 각 문자열이 포함되어 있는지 for문 내에서 replace()함수를 이용해서 찾고, 있으면 다른 문자로 변경한다.

3. for문이 종료된 후 babbling 배열의 문자열에서 바뀐 문자로만 이루어진 문자열이 있다면 발음 가능한 단어 갯수로 count한다.

 

작성한 코드

def solution(babbling):
    count = 0
    word=["aya","ye","woo","ma"]
    for i in range(len(babbling)):
        for j in range(len(word)):
            babbling[i] = babbling[i].replace(word[j],"*")
    
    for i in range(len(babbling)):
        if babbling[i]=="*" or babbling[i]=="**" or babbling[i]=="***" or babbling[i]=="****":
            count+=1
    return count

babbling 배열에 word 배열 문자열이 포함되어 있는지 비교할 방법을 생각하는데 오래걸렸다.

파이썬 코테 공부를 몇 달 쉬었다가 하려니까 함수도 까먹어서 문자열 함수를 검색해보다가 떠올라 시도해본 방법!

 

처음에 replace될 문자열을 공백으로 줬다가, "wyeoo"라는 테스트 케이스에서 "ye"가 제외되고 "woo"만 남았을 때 또 "woo"로 제외되어서 발음할 수 있는 단어로 카운트됐다. 그래서 대체 문자열을 "*"로 했는데 마지막 for문 대신 뭔가 더 깔끔하게 카운트할 방법이 없을까 고민 중이다.

 

728x90