숫자로 이루어진 배열을 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 서로 다른 인덱스(연속적이든 아니든)에 위치한 두 숫자의 쌍을 찾아야 하며, 그 쌍의 합 역시 배열 안에 존재해야 합니다. 조건을 만족하는 쌍을 찾으면 해당 두 숫자를 반환하고, 만족하는 쌍이 없다면 빈 배열을 반환합니다.
예제 코드
다음은 위 문제를 해결하는 코드입니다 −
const arr = [1, 3, 5, 6, 8, 9];
const findPair = (arr = []) => {
let count = 0;
for(let i = 0; i < arr.length; i++){
for(let j = 0; j < arr.length; j++){
if(i === j){
break;
};
let sum = arr[i] + arr[j];
if(arr.includes(sum)){
return [arr[i], arr[j]];
};
};
};
return [];
};
console.log(findPair(arr));
코드 동작 원리
- 두 개의 중첩 반복문을 사용하여 배열 내 모든 숫자 쌍의 조합을 하나씩 확인합니다.
- i와 j가 같으면 동일한 요소를 가리키므로 반복문을 종료하고 다음 단계로 넘어갑니다.
- 서로 다른 인덱스의 두 숫자를 더한 뒤, Array.prototype.includes() 메서드를 통해 그 합이 배열에 이미 존재하는지 검사합니다.
- 조건을 만족하는 쌍을 발견하는 즉시 해당 쌍을 배열 형태로 반환하며, 끝까지 찾지 못하면 빈 배열([])을 반환합니다.
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다 −
[5, 1]
위 예제에서 5와 1의 합은 6이며, 6은 배열 [1, 3, 5, 6, 8, 9] 안에 존재하므로 함수는 [5, 1]을 반환합니다.