1684. Count the Number of Consistent Strings
주어진 allowed
의 string으로만 구성되는 배열 데이터를 구하는 알고리즘으로 문제를 이해하는 것은 쉬웠지만 언제나 그렇듯이 코드로 구현하는 것은 어려운 법..
아래처럼 map
메소드와 replaceAll
이라는 처음 보는 메소드로 구현을 했다. 실제로 콘솔 창에서 해당 코드로 실행했을 때에는 무리 없이 돌아갔지만, leetcode 브라우저의 버전으로는 replaceAll
메소드를 제공하지 않는지 돌아가지 않았다ㅠ
이러한 경우도 있겠거니 하고 다른 로직을 떠올리려 했지만, 이후로는 현재 코드에 사로잡혀서 로직이 떠오르지 않았다. 시간 낭비를 계속해서 할 수는 없었기에 다른 코드를 찾아보기로 했다.
1 2 3 4 5 6 7 8 | var countConsistentStrings = function(allowed, words) { let arr = new Array for (let i = 0; i < allowed.length; i++) { arr = words.map(word => word.replaceAll(allowed[i], '')) words = arr } return words.filter(x => x.length === 0).length }; | cs |
중첩 반복문을 사용하는 것까지는 생각했던 코드이지만, 이후의 코드 작성에 대해 떠오르지 않았다. 아래처럼 if
와 break
를 사용하는 것에 대해 더 익숙해져야 할 것 같다.
else if (j === word.length - 1) result.push(word)
그리고 위처럼 루프가 끝났을 때를 위와 같은 조건으로 설정하는 것도 처음 접하는 코드였다. 실제로 로직 자체는 어렵지 않았지만, 계속 보면서 익숙해져야 활용할 수 있는 코드라 생각한다 :D
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | const countConsistentStrings = (allowed, words) => { let result = []; for (let i = 0; i < words.length; i++) { const word = words[i] for (let j = 0; j < word.length; j++) { const char = word[j]; if (!allowed.includes(char)) break; else if (j === word.length - 1) result.push(word) } } return result.length; }; | cs |