JavaScript 배열 요소 합으로 해당 배열 요소 찾아내기

라용·2022년 8월 29일
0

위코드 - 스터디로그

목록 보기
18/100

위코드 코드카타를 풀며 정리한 내용입니다.

문제

숫자 배열과 배열 내 두 숫자를 더해서 나온 합계로 두 숫자의 인덱스 값을 배열로 반환합니다.

//입력
nums = [4, 9, 11, 14]
target = 13  // => 배열 내 두 요소를 더해서 나온 값

//출력
[0, 1]

풀이

배열의 요소를 돌면서 확인해야 하므로 for in 반복문 형태를 만들어 줍니다.

const twoSum = (nums, target) => {
	let arr = [];
	for (let i in nums) {
		함수 작성
		}
	}
	return arr;
}

합계에서 배열의 요소를 뺀 값이 다른 요소이므로 배열의 요소를 돌면서 해당 값이 있는 경우 배열에 인덱스 값을 넣어줍니다.

const twoSum = (nums, target) => {
	let arr = [];
	for (let i in nums) {
		let otherNum = target - nums[i];
		if (nums.indexOf(otherNum) !== -1) { // indexOf 로 유무 확인
			arr.push(parseInt(i));  // 숫자 형태로 변환해서 넣음
		}
	}
	return arr;
}

정답

정답 코드는 아래와 같습니다. [1, 2, 3, 4] 란 배열이 있을 때 1 을 기준으로 2, 3, 4 를 더해서 비교해보고 없다면 2를 기준으로 3, 4 만 더해 보변 됩니다. 2 앞의 1과는 그 앞에서 더해봤기 때문에 각 요소 기준으로 뒤에 오는 값들만 반복문을 돌려 더합니다.

function twoSum(nums, target) {
  for (let i = 0; i < nums.length-1; i++) {
    for (let j = i+1; j < nums.length; j++) {
       if (nums[i] + nums[j] === target) {
         return [i, j];
       }
    }
  }
}
profile
Today I Learned

0개의 댓글