NIRVANA
[level 1] 옹알이(2) (다시 풀기) 본문
문제
머쓱이는 태어난 지 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): 문자열 안에서 특정 문자(열)을 새로운 문자(열)로 바꾸는 연산자
'Coding test(Python3) > Programmers' 카테고리의 다른 글
[level 1] 체육복 (0) | 2023.08.30 |
---|---|
[level 1] 숫자 짝꿍 (0) | 2023.08.30 |
[level 1] 로또의 최고 순위와 최저순위 (1) | 2023.08.27 |
[level 1] [1차] 다트 게임(정규 표현식 복습하기) (0) | 2023.08.27 |
[level 1] 기사단원의 무기 + 약수 구하기 복습 (0) | 2023.08.25 |