[ 문제 ] 배열 중 가장 긴 단어 찾기
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에 저장한다.
항상 더 쉽고 간결한 방법을 찾자.
'■ 프로그래밍 > 알고리즘' 카테고리의 다른 글
[JS] Isograms (0) | 2020.11.06 |
---|---|
[JS] 가장 넓은 면적 구하기 (0) | 2020.04.17 |
[JS] 특정 수가 나오는 index 찾기 (0) | 2020.04.07 |
[JS] 문자의 첫번째 위치 반환하기 (0) | 2020.04.05 |
[JS] Object를 활용한 성적 가져오기 (0) | 2020.03.31 |