머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
내가 제출한 답은 아래와 같다.
def solution(babbling):
answer = 0
words = ["aya", "ye", "woo", "ma"]
for bab in babbling:
repeat = len(words) # words 갯수 만큼 반복
for _ in range(repeat):
for word in words:
if bab.startswith(word):
bab = bab[len(word):] # word로 시작하면 그 부분을 제거
if bab == "":
answer += 1 # 모든 문자열이 제거되면 카운트 1업
break
return answer
replace를 사용하면 "wyeoo"와 같이 처음에 ye를 replace하고 그 다음에 남은 woo를 replace해버리는 문제가 발생한다. startswith로 먼저 단어가 들어있는 지 확인한 후 있으면 if문으로 단어를 제거했다.
이 단계를 "aya", "ye", "woo", "ma"에 대해 거치면 반복 1회가 끝난다.
만약 babbling에 "mawooyeaya"가 주어지면 처음에 ma가 없어져서 "wooyeaya"가 남는다.
그러므로 이러한 과정을 words의 갯수만큼 반복해주면 "mawooyeaya"의 경우 마지막에 ""만 남길 수 있다.
만약 "ayayewooma"가 있으면 첫 iteration에서 answer가 +1되어 나머지 3번의 iteration은 쓸데없이 돌리게 되는 단점이 있지만, 시간 관계 상 수정은 다음 기회에 해야겠다.
오랜만에 문제풀이를 하는데, 난이도 0 문제에서 시간이 오래 걸려서 자괴감을 느꼈다.
문제를 다시 한 번 자세히 읽어보니, words의 단어가 최대 1번씩만 나온다는 조건을 확인하였다.
이 조건이 많은 제약을 걸어 바로 문제를 풀 수 있었다.
이 문제의 출제 의도는 "문제를 꼼꼼히 읽어라" 아닐까 싶다.
'IT' 카테고리의 다른 글
[레벨2] 모음사전 (0) | 2023.05.05 |
---|---|
[레벨2] 게임 맵 최단거리 (0) | 2023.05.04 |
iOS 14 베타 버전 설치하기 (0) | 2020.06.29 |
일본에서 미국 직구하기 (3) 세금 (2) | 2020.06.16 |
일본에서 미국 직구하기 (2) 배대지 찾기 (4) | 2019.12.07 |
댓글