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('')