[programmers] lv.1 옹알이(2)

jeongjeong2·2023년 1월 24일
0

For coding test

목록 보기
22/59

문제 설명 문제 바로가기

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

제한 사항

1 ≤ babbling의 길이 ≤ 100
1 ≤ babbling[i]의 길이 ≤ 30
문자열은 알파벳 소문자로만 이루어져 있습니다.

입출력 예

문제 접근

  • 문제 풀이 시간 10~15분
  • can_do 함수를 정의해서 for문으로 각 문자열이 발음 가능한지 불가능한지 여부를 판단.
  • 문자열이 중복되는 경우를 제거하는 데에 불필요한 코드를 많이 사용한 것 같다.
  • 주어진 문자열을 replace시키고 len(babbling)이 0이 되는 경우만 count해서 answer를 return

나의 풀이

def can_do(word): #can_do함수 정의
    cant_do = ["ayaaya", "yeye", "woowoo", "mama" ] #발음 할 수 없는 경우는 제외 (2번 연속 발음하는 경우)
    for i in cant_do:
        if i in word:
            return 0
    word = word.replace('aya','.')#for문 사용하기
    word = word.replace('ye','.')#for문 사용하기
    word = word.replace('woo','.')#for문 사용하기
    word = word.replace('ma','.')#for문 사용하기
    print(word)
    if len(word) - word.count('.') == 0:
        return 1
    else:
        return 0

def solution(babbling):
    answer = 0
    for i in babbling:
        answer = answer + can_do(i)
    return answer

다른 사람 풀이

def solution(babbling):
    answer = 0
    for i in babbling:
        for j in ['aya','ye','woo','ma']:
            if j*2 not in i:
                i=i.replace(j,' ')
        if len(i.strip())==0:
            answer +=1
    return answer
  • j*2로 문자열이 두 번 사용되는 경우 간단히 표현
  • for 문을 사용해서 replace 4번 간단히 표현
  • j*2가 포함되는 경우 not in 으로 간단히 경우에서 배제
  • 역대급으로 생각없이 푼 것 같다.

0개의 댓글