
기본 코드
def solution(babbling):
return
코드 풀이 (1)
def solution(babbling):
arr = ["aya", "ye", "woo", "ma"]
cnt = 0
for word in babbling:
for i in arr:
word = word.replace(i, " ")
if not word.strip():
cnt += 1
break
return cnt
제공된 문자열 배열의 단어가 "aya", "ye", "woo", "ma" 문자열을 포함한다면 공백 문자열 " "로 대체합니다. 빈 문자열 ""로 대체한다면 오류가 생길 수 있습니다.
예를 들어 "wyeoo"라는 단어를 입력받았고, 조카가 발음할 수 있는 단어 배열을 살펴보면 "ye"라는 문자열이 먼저 있기 때문에 이를 빈 문자열로 대체하면 "wyeoo"라는 문자열은 "woo"가 됩니다. 이 단어는 역시 또 대체가 가능해지기 때문에 실제로 조카가 말할 수 있는 단어들의 조합이 아닌데도 그런 것 처럼 오류가 발생할 수 있습니다.
해당 입력 단어에 공백 대체 작업이 끝나고 이 단어에 양 끝 공백 제거가 가능하다면 카운트 수를 올리고 모든 작업 후 카운트 수를 리턴합니다.
break는 내부 루프에서 첫 번째 단어에 대한 치환(word = word.replace(i, " ")) 이후에 곧바로 다음 단어로 넘어가도록 하고, if not word.strip():에서 단어가 공백인지 여부를 확인하여 만약 공백이라면 cnt를 증가시키고 더 이상 다른 단어를 비교하지 않도록 합니다.
코드 풀이 (2)
import re
def solution(babbling):
arr = ["aya", "ye", "woo", "ma"]
cnt = 0
for word in babbling:
modified_word = re.sub('|'.join(arr), ' ', word)
if not modified_word.strip():
cnt += 1
return cnt
첫 번째 방법은 시간 복잡도가 너무 크고 너무 일차원적이라서 두 번째 풀이를 만들어봤습니다.
or을 의미하는 |로 연결한 문자열을 생성합니다. aya|ye|woo|ma re.sub(pattern, replacement, string)