https://school.programmers.co.kr/learn/courses/30/lessons/120956
그래 뭐.. 구현 되었음 되었지 뭐..
def solution(babbling):
cando = ["aya", "ye", "woo", "ma"]
count = 0
for bab in babbling:
while len(bab) >= 0:
if len(bab) == 0:
count += 1
break
elif len(bab) >= 3 and bab[:3] in cando:
bab = bab[3:]
elif len(bab) >=2 and bab[:2] in cando:
bab = bab[2:]
else:
break
return count
타풀이
왜 조건을 이렇게 줬을까 if w * 2 not in b:
여기서 이 조건에 걸러지는게 의미가 있나? 조카가 최대 한 번씩 사용해 조합한 발음밖에 못해서 가 의도인거 같긴 한데
근데 저건 문자열이 두번 연속해서 나와야 하는거라 떨어져서 두번 나오면 의미가 없지 않나
애초에 문제 조건이 babbling 의 각 문자열에서 저 조카가 구현 가능한 옹알이가 각각 최대 한번씩만 등장한다고 되어있는데..
뭐 조금이라도 걸러진다고 치고
저렇게 replace로 했을 때 w가 없는 경우 본래 문자열 그대로 남는다는거 replace 함수 파악이 덜되서 이번에 알았다.
def solution(babbling):
c = 0
for b in babbling:
for w in [ "aya", "ye", "woo", "ma" ]:
if w * 2 not in b:
b = b.replace(w, ' ')
if len(b.strip()) == 0:
c += 1
return c
저기서 replace 로 ' ' 공백이 아니라 아예 지워 버리면 되지 않나 '' 했더니 그렇게 되면 중간에 word를 지우고 앞뒤로 붙었을때 또 가능한 word가 의도치 않게 만들어질 수 있기 때문에 안된다.
저 if문 (if w * 2 not in b:)은 불필요한듯 하여 지우고 실행해보니 잘 통과 되었다.
def solution(babbling):
count = 0
for bab in babbling:
for word in [ "aya", "ye", "woo", "ma" ]:
bab = bab.replace(word, ' ')
if len(bab.strip()) == 0:
count += 1
return count
또 다른 풀이
이건 또 뭐람... 정규표현식 가져온건가....
import re
def solution(babbling):
regex = re.compile('^(aya|ye|woo|ma)+$')
cnt=0
for e in babbling:
if regex.match(e):
cnt+=1
return cnt
'코테 공부 > python' 카테고리의 다른 글
[프로그래머스] Python 이진수 더하기 (0) | 2023.06.13 |
---|---|
Python 변수 할당을 리스트/문자열 슬라이싱으로 (0) | 2023.06.13 |
[프로그래머스] Python 치킨쿠폰 (0) | 2023.06.09 |
Python 바다코끼리 연산자 := / 이중배열을 dict()로 (0) | 2023.06.09 |
Python dictionary .get(찾는 key, defaut = None) (0) | 2023.06.09 |