코딩테스트 연습 - 옹알이 (2) | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다.
문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ babbling의 길이 ≤ 100
1 ≤ babbling[i]의 길이 ≤ 30
문자열은 알파벳 소문자로만 이루어져 있습니다.
입출력 예
babbling | result |
["aya", "yee", "u", "maa"] | 1 |
["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"] | 2 |
풀이
아이디어 :
첫번째로 4개의 발음을 반복하여 말하는 단어를 조건으로 걸어서 필터링 해준다.
반복하여 말하지 않는 단어라면, 그 단어가 4개의 단어로만 이루어졌는지 확인하기 위해서 replace를 사용한다.
4개의 단어 각각을 순회하면서 replace로 바꿔주면서 마지막에 남은 알파벳이 있는지 확인해준다.
def solution(babbling):
words = [ "aya", "ye", "woo", "ma"]
answer = 0
for i in babbling:
# 반복헤서 발음하는지 확인하기 위해 조건을 걸어준다.
if any(saying*2 in i for saying in words):
continue
else:
# 말할 수 있는 4개의 단어 각각을 순회
for word in words:
# 각각의 단어를 공백으로 대체해준다.(replace는 기본적으로 해당하는 모든 문자를 대체)
i=i.replace(word,' ')
# 단어 순회가 끝났으면 공백을 다시 제거해준다.
i=i.replace(" ",'')
# 길이가 0이라면 4개의 단어로만 이루어진 것이고,
# 다른 알파벳이 1개라도 남았다면 다른 단어가 포함된것이다.
if len(i)==0:
answer+=1
return answer
이때 처음에는 replace를 공백으로 대체해 주지 않고 바로 빈칸으로 삭제했더니, 테스트케이스 절반이 실패였다.
알고보니 "yayae" 이런 단어 같은 경우에는, 단어를 처음부터 삭제한다면 중간에 "aya" 가 지워지고 "ye"가 남게 되어 이것 또한 지워져서 발음할 수 없는 단어를 발음할 수 있다고 잘못 판단하게 된다.
따라서 처음부터 단어를 삭제하지 않고 공백으로 대체하여서, 남겨진 알파벳이 우연히 단어와 일치한다고 해서 삭제되지 않게 해주었다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.1] 시저 암호 (Python) (2) | 2024.08.15 |
---|---|
[프로그래머스 Lv.1] 숫자 짝꿍(Python) (0) | 2024.08.12 |
[프로그래머스 Lv.1] 로또의 최고 순위와 최저 순위(Python) (0) | 2024.08.04 |
[프로그래머스 Lv.1] 기사단원의 무기 (Python) (0) | 2024.08.03 |
[프로그래머스 Lv.1] 덧칠하기 (Python) (0) | 2024.08.02 |