[프로그래머스] 옹알이(1) - Python

2025. 4. 10. 23:02Python

파이썬 공부를 하며, 프로그래머스 문제로 연습을 하던 도중...

아주 흥미로운 녀석을 만나서 포스트를 작성하게 되었다.


문제설명 >

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

 

제한사항 >

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 15
  • babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
    • 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

 

나의 풀이 >

def solution(babbling):
    joka = ["aya", "ye", "woo", "ma"]
    answer = 0
    for i in babbling :
        for j in joka :
            i = i.replace(j, " ")
        if i.strip() == "":
            answer += 1
    return answer

 

1. 한 줄씩 살펴보면, 먼저 조카가 발음 가능한 단어들을 "joka"라는 리스트에 담아준다.

2. babbling을 for문으로 돌리면서 joka도 함께 for문으로 비교를 한다.

3. babbling의 i에 대응하는 joka의 j가 같은게 있으면 그것을 빈 문자열 " " 로 replace() 함수를 이용해 치환해준다.

4. 모든 for문이 돌고 나면, i와 j가 대응되었던 곳은 모두 " "로 치환이 되었을 것이다.

5. 여기서, 양 끝이 빈 문자열인 것을 없앴을때 아무것도 남지 않닸다면, 그 단어는 완벽히 발음 가능한 단어 이므로,

그럴 경우에만 answer 카운터 수 +1 해준다.

 


아직 Python이 익숙치 않아서, strip() 같은 함수도 몰랐지만,

이렇게 문제를 풀면서 하나씩 얻어가는게 있는 것 같다.