221219 | 코드카타 Day 1

앙두·2022년 12월 19일
0

JavaScript

목록 보기
3/21

Day 1 문제 🧠

twoSum 함수의 매개변수에 (숫자배열, 특정 수) 를 인자로 넘긴다.
숫자배열 내 요소 2개가 더한 값이 특정 수와 일치하게 된다면,
그 숫자배열 요소 인덱스 번호를 배열로 반환해라.

twoSum 함수의 매개변수는 (nums, target) 이다
nums 엔 숫자배열이, target엔 특정수를 넘겨줄 것이다 👇🏻

  • 숫자배열은 number 명에 [4, 9, 11, 14] 이다
  • target 은 13으로 넘겨준다
const numbers = [4, 9, 11, 14]

const twoSum = (nums, target) => {

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

console.log(twoSum(numbers, 13));
// [0, 1]

첫 떠올린 필수로직은, 숫자배열내의 아무개 인덱스요소 두개가 target과 같아야 한다는 것이다.
=> if (nums[i] + nums[j] === target)

숫자배열에서 2개의 요소가 순회하면서 더해줘보면서 if 조건과 같은지 봐야 하기 때문에,
for 문을 먼저 썼다. (2개의 요소여서 for문 중첩사용)

i가 먼저 들어가면, j가 다 순회하고 target과 일치하면 종료
일치하지 않으면 다시 나와서 다음 인덱스 요소로 i가 들어가서 다시 j로 배열 순회

return 으로 배열형태를 반환해주었다!



+ array.push() 메소드를 활용한 풀이방법 👇🏻
const numbers = [4, 9, 11, 14, 1, 5, 8]

const twoSum = (nums, target) => {
  let result = [];

  for (let i = 0; i < nums.length; i++) {
    for (let j = 0; j < nums.length; j++) {
      if (nums[i] + nums[j] === target) {
        result.push(i);
        result.push(j);
        return result;
      }
    }
  }
}

console.log(twoSum(numbers, 20));
// [ 1, 2 ]

짝꿍과 금방 푸러버렸당 🤭
이 아니고 코테 낙점 ㅡㅡ 된다고 한다 이건

map() 메소드로 시도해봤으나 폭이

profile
쓸모있는 기술자

0개의 댓글