■ 프로그래밍/알고리즘
[JS] 가장 긴 단어 찾기
hi_mj
2020. 4. 4. 15:45
[ 문제 ] 배열 중 가장 긴 단어 찾기
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에 저장한다.
항상 더 쉽고 간결한 방법을 찾자.