NIRVANA

[level 1] 옹알이(2) (다시 풀기) 본문

Coding test(Python3)/Programmers

[level 1] 옹알이(2) (다시 풀기)

녜잉 2023. 8. 29. 18:08

문제

머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

문제 풀이 접근법1

1) for문으로 babbling의 단어 중 으쓱이의 조카가 발음할 수 있는 단어를 공백으로 교체
(이때, 으쓱이의 조카가 같은 단어 반복은 발음을 못하므로 해당 부분을 빼주기 위해 따로 체크 진행)
2) 단어가 공백으로만 이루어져 있으면 result에 +1 해주기 

def solution(babbling):
    answer = 0
    words = [ "aya", "ye", "woo", "ma" ]
    twice = ["ayaaya", "yeye", "woowoo", "mama"]
    
    for i in range(len(babbling)):
        for j in words:
            if babbling[i] not in twice:
                babbling[i] = babbling[i].replace(j, ' ')
            

    for i in babbling:
        if not i.strip():
            answer+=1
            
    return answer

8, 11, 12, 13, 14, 17, 18번 테스트 케이스에서 오류가 발생했다. 

반례는 ["ayayeye"]였다. ye가 두번 연속으로 나오므로 발음이 불가능한데 발음이 가능한 것으로 처리가 되었다...ㅎ

근데 아무리 생각해도...이걸 어떻게 체크해야 하는지 모르겠어서 결국 답지 봄..

 

문제 풀이 접근법2

def solution(babbling):
    answer = 0
    words = [ "aya", "ye", "woo", "ma" ]
    
    for i in range(len(babbling)):
        for j in words:
            if j*2 not in babbling[i]:
                babbling[i] = babbling[i].replace(j, ' ')
            

    for i in babbling:
        if not i.strip():
            answer+=1
            
    return answer

in을 어떻게 잘 사용할 수 있는지에 따라 문제 난이도가 확 갈릴 것 같다는 생각이 들었다..

 

in: 데이터 안에 찾고자 하는 것이 있는지 없는지 확인하는 연산자

replace(old, new, count): 문자열 안에서 특정 문자(열)을 새로운 문자(열)로 바꾸는 연산자

 


참고: https://dduniverse.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%98%B9%EC%95%8C%EC%9D%B42-%ED%8C%8C%EC%9D%B4%EC%8D%AC-python

 

프로그래머스 | 옹알이(2) [파이썬 python]

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def

dduniverse.tistory.com