LeetCode 14. Longest Common Prefix

JavaScript, Array Destructuring, Every method

Jun
2 min readJul 12, 2020

문제링크

문제분석

여러개의 문자열이 담긴 배열이 들어올 때, 서로 다른 문자열들이 공유하는 가장 긴 접두사를 찾기. 예를들어, ["flower", "flow", "flight"] 가 인풋으로 들어오면 아웃풋으로 "fl" 이 리턴된다.

돌파구

이 방법을 풀어낼 수 있는 방법은 여러가지가 있다. 처음에 문제를 접하고 직관적으로 떠오른 방법은 바로 첫번째 문자열과 나머지 문자열을 분리해서 생각하는 것 이었다. 첫번째 문자열을 쪼개서, 문자 하나하나씩 첫번째 문자열을 제외한 배열에 담긴 나머지 문자열에도 있는지를 검사하면 되지 않을까? 이 방법을 사용하기 위해서 먼저 배열의 destructuring 을 사용했다.

이렇게 배열을 쪼개고 난 후에 해야 할 일은, 첫번째 문자열을 문자로 쪼개서 하나하나 반복문을 돌리는 것이다. 왜냐하면, 문자 하나하나 모두 나머지 배열에도 담겨있는지 없는지를 확인하기 위함이다. 이 때, ES6+ 에서 제공된 array 메소드 중 every 를 사용할 수 있다. every 메소드는 모든 배열의 요소에 대해 인자로 넘겨준 함수가 true를 리턴하면 최종적으로 true를, 하나라도 false를 리턴하면 false 를 리턴한다. 함수의 이름처럼 모든 요소가 조건을 만족하는지를 확인할 때 사용할 수 있는 함수다. 또한 일반적인 for문이 아니라 검사의 효율을 위해서 for .. of 문을 사용했다. 그리고, 이 for문 안에서 우리는 배열의 요소 뿐만 아니라 index도 사용해야 하기 때문에 첫번째 문자열을 배열로 만들고 entries() 메소드를 통해 for문 안에서 인덱스와, 요소 둘 다 사용할 수 있도록 구현했다.

구현

--

--

No responses yet