CS/Algorithm & Data Structure

[Programmers][Python] 옹알이(1)

Yeji Heo 2023. 5. 10. 23:00

- 처음에 생각한  풀이

1. 발음 가능한 단어와 완전 일치한 입력단어가 있나?

--> 바로 answer에 1을 추가하고 continue.

 

2. 일치하지는 않는다면 발음 가능한지(가능한 것들로 이뤄졌는지) 체크

--> 발음 가능한 단어를 하나씩 꺼내어 입력단어에 포함되었는지 확인,

있다면 1회 제거(문자열에서 최대 1번만 등장한다는 조건 때문)

replace사용

 

2-2. 한 입력단어에 대해 모든 '발음가능단어'를 포함 확인&제거 했을 때,

문자열이 비어서 ' ' 이면 발음 가능한 단어이므로 answer에 1을 추가

able = {"aya", "ye", "woo", "ma"}

def solution(babbling):
    answer = 0
    for word in babbling:
        if word in able: 
            answer+=1
            continue
        
        for item in able:
            if item in word: word= word.replace(item, '', 1)
            
        if word=='': 
            answer+=1
            
    return answer

테스트케이스는 통과했는데, 결과는 틀림!

- 문제점

wyeoo 라는 단어를 예로 들었을때, ye가 있으니 먼저 삭제하면 남은 단어는 woo라는 단어로 바뀜.

w와 oo는 발음이 불가하지만, ye의삭제로 인해 바뀐 단어 woo는 발음 가능하다고 인식해버림.

--> 단어를 바로 ' '로 제거하지않고, '.'이나 '?' 등을 추가한후 나머지 단어들도 다 체크.

이후에 '.'이나 '?'  등 대체했던 문자를 모두 삭제한 후 최종 결과확인 

able = {"aya", "ye", "woo", "ma"}

def solution(babbling):
    answer = 0
    for word in babbling:
        if word in able: 
            answer+=1
            continue
        
        for item in able:
            if item in word: word = word.replace(item, '.', 1)
            
        word = word.replace('.', '')
        if word=='': 
            answer+=1
            
    return answer