본문 바로가기

■ 프로그래밍/알고리즘

[JS] 가장 긴 단어 찾기

[ 문제 ] 배열 중 가장 긴 단어 찾기

ex. longest_word(["abcde", "abc", "e"]); // output: "abcde"

 

[ 풀이 ]

2020.04.03

function longest_word(arr) {
  var a = new Array();
  var longestWordLength;
  
  for (var i = 0; i < arr.length; i++) {
    a.push(arr[i].length);
    a = a.sort().reverse();
  }
  longestWordLength = a[0];
  // console.log(longestWordLength);
  
  for (var j = 0; j <arr.length; j++) {
    if (arr[j].length === longestWordLength) {
      return arr[j]
    }
  }
}

longest_word(["abcde", "abc", "e"]);
// --> "abcde"

너무 어렵게 생각해서 코드가 길어졌다. 

a라는 array와 longestWordLength를 만들었다. 그 후, 반복문으로 arr의 길이만큼 각각의 length를 longestWordLength에 저장해서 그걸로 다시 for문을 돌려 위에 추출한 가장 긴 length와 일치한 단어를 return 해라.... 복잡하기 그지 없다...

 

더 쉬운 방법이 있었다

function longest_word(arr) {
  let longest = arr[0];
  for(let i = 0; i < arr.length; i++) {
    if(arr[i].length > longest.length) {
      longest = arr[i];
    }
  }
  return longest;
}

우선 arr[0]를 기준으로 잡고, for문을 돌려 만약 i번째의 length가 arr[0]의 length보다 길다면 i번째의 값을 longest에 저장한다. 

 

항상 더 쉽고 간결한 방법을 찾자.