✏️ 문제

배열과 정수 값이 주어질 때, 배열 내 두 값을 합하여 정수 값을 만들 수 있도록 두개의 index를 반환하는
함수를 작성하시오. 각 입력에 정확히 하나의 솔루션이 있다고 가정하고, 동일한 요소를 두 번 사용하지 않는다.
배열의 index는 오름차순으로 정렬하여 반환한다.
입력값

  [[2, 7, 11, 15], 9],
  [[3, 2, 4], 6],
  [[3, 3], 6],

📝 풀이

function answer(nums, target) {
  // target에 대한 값을 찾기 target = nums[i] + nums[j]

  // 2중 for문으로 풀기
  for (let i = 0; i < nums.length; i++) {
    for (let j = i + 1; j < nums.length; j++) {
      if (nums[i] + nums[j] == target) {
        return [i, j];
      }
    }
  }

  // for문으로 풀기
  let map = {} // key, value

  for (let i = 0; i < nums.length; i++) {
    if (map[target - nums[i]] != undefined) {
      return [map[target - nums[i]], i];
    }
    map[nums[i]] = i;
  }

  return [];
}
  1. nums 배열 내 두 값을 더하여 target의 값을 만들 수 있는 nums 요소의 인덱스 위치를 찾는 문제이다.
  2. 먼저 nums의 길이 만큼 순회하며, [i]인덱스와 [j] 인덱스를 더했을 때 target이 나오면 return하는 for문을 작성한다. 여기서 j는 1부터 시작하므로 i의 다음 인덱스의 위치를 뜻한다.
    ❗️ 2중 for문이 아닌 for문 하나로 코드를 작성하면 깔끔하고 빠르게 작동할 수 있게 해주니 아래의 for문 코드도 잘 이해해보는 것이 좋다.
profile
#UXUI #코린이

0개의 댓글