[프로그래머스] 옹알이 - replace

zunzero·2022년 9월 29일
1

알고리즘(파이썬)

목록 보기
48/54

https://school.programmers.co.kr/learn/courses/30/lessons/120956#

문제의 테스트케이스가 이상한건가...?
우선 아래 문제설명과 테스트 케이스를 살펴 보자.

아이는 현재 옹알이 중이라 {"aya", "ye", "ma", "woo"} 4가지 발음과 그 조합으로 밖에 말할 수 없다.

첫 번째 입력 케이스는 문제가 없다.
하지만 두 번째 입력 케이스는 예시와 설명이 다르다.
"ayaye", "yeye", "yemawoo" 이렇게 총 3개가 테스트에서 통과가 되어야 한다.
반면 문제 걸명에서는 "yeye"의 케이스를 성공으로 보지 않았고, "ye"+"ma"+"woo" = "yewoo"라는 멍청한 소리를 하고 있다.

def solution(babbling):
    can_speak = ["aya", "ye", "woo", "ma"]
    
    for i in range(len(babbling)):
        for j in range(4):
            if can_speak[j] in babbling[i]:
                babbling[i] = babbling[i].replace(can_speak[j], "")
    
    return babbling.count('')

분명 문제 이해를 잘 못한 것 같아서, 프로그래머스 패널티를 부여받고 다른 사람의 코드를 열어보았다.

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

if j+j in i : break 문이 정답에 포함된 걸 보니, 연속된 것이 포함된 건 정답에서 빠지나보다.
(미리 적어놔주던지...)
아 지금 보니까 문제에 적혀있었다.
문제 조건을 잘 확인하자...;;;ㅎ

아래와 같이 if문 하나 더 넣어서 코드를 수정하니, 정답 판정이 났다... ㅎ;;;

def solution(babbling):
    can_speak = ["aya", "ye", "woo", "ma"]
    
    for i in range(len(babbling)):
        for j in range(4):
            if can_speak[j] + can_speak[j] in babbling[i]:
                continue
            if can_speak[j] in babbling[i]:
                babbling[i] = babbling[i].replace(can_speak[j], "")
    
    return babbling.count('')
profile
나만 읽을 수 있는 블로그

0개의 댓글