728x90
반응형
Description
https://jakpentest.tistory.com/228d
에서 다른 해결 방법은 없을까 생각해서 시도하게 되었다.
풀이 방법
위에 첨부한 링크 내용 중에서도 알 수 있듯 문제를 처음 풀었을 때는 단순하게 가능한 모든 경우의 수를 고려하고 그 안에서 매칭 되는 게 있으면 counter를 올리는 방식으로 풀었다. 이 풀이 방법은 단순하고 직관적이라 생각했는데 공간을 너무 낭비한다는 게 단점이었다. 더 나은 솔루션은(사실은 다른 풀이를 보고 참고했다.) 받아들인 문자열을 재귀적으로 삭제하면서 길이가 0일 될 때 카운트를 올려주는 방식으로 풀어 나가는 것이었다.
즉 다음과 같다.
만약 'ayaye'에서 발음할 수 있는 단어의 개수를 카운팅 하는 것이라면 문제에서 주어진 순서인 다름 리스트를 순회하면서 삭제해주면 되는 것이다.
["aya", "ye", "woo", "ma"]
즉 하나의 문자열에 필터링 가능한 문자를 계속 적용하는 방식이다.
Code
def solution2(babbling):
enables = ["aya", "ye", "woo", "ma"]
counter = 0
for babble in babbling:
for enable in enables:
babble = babble.replace(enable, " ").strip()
if len(babble) == 0:
counter += 1
break
return counter
처음 풀었을 때 보다 각 테스트 케이스에서 성능이 향상되었다.
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 평행 (0) | 2022.12.12 |
---|---|
[Programmers] 7의 갯수 구하기 (0) | 2022.12.08 |
[Programmers] 옹알이 (0) | 2022.12.06 |
[Programmers] 1주차_부족한 금액 계산하기 (0) | 2021.09.07 |
[Programmers] 2021 카카오 채용연계형 인턴십숫자 > 문자열과 영단어도움말 (0) | 2021.07.14 |