[자바스크립트로 하는 자료 구조와 알고리즘] 5장 자바스크립트 배열 - 1
어떤 수가 주어졌을 때 배열 내의 어떤 항목 두 개를 합쳐야 해당 수가 되는지 찾아라
문제 : 배열 arr이 있고 어떤 수 weight가 주어졌을 때 합쳐서 weight가 되는 배열 내 항목 두 개의 인덱스를 반환하라. 만약 합쳐서 weigth가 되는 항목 두 개가 존재하지 않는 경우 -1을 반환하라.
책에 있는 가장 간단한 방법의 코드이다.
const arr = [1, 2, 3, 4, 5];
const weight = 9;
function findSum(arr, weight) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] === weight) {
return [i, j];
}
}
}
return -1;
}
여기서 배열을 [1, 2, 3, 4, 5, 6, 7]
로 바꿔보자. 합쳐서 9가 될 수 있는 수는 [2,7], [3,6], [4,5]
로 세 쌍이 존재한다. 하지만 위 코드에서는 한 쌍만 찾아도 바로 return
을 하기 때문에 모든 쌍을 찾을 수 없다.
그래서 다음과 같이 수정해보았다.
const arr = [1, 2, 3, 4, 5, 6, 7];
const weight = 9;
const result = [];
function newfindSum(arr, weight) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] + arr[j] === weight) {
result.push([i, j]);
}
}
}
return result.length === 0 ? -1 : result;
}
실행결과 :
Author And Source
이 문제에 관하여([자바스크립트로 하는 자료 구조와 알고리즘] 5장 자바스크립트 배열 - 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@moon-yerim/5장-자바스크립트-배열저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)