[코드카타] 1일차

summerlee·2022년 10월 17일
0

TIL

목록 보기
30/39

문제

twoSum 함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.

nums: 숫자 배열
target: 두 수를 더해서 나올 수 있는 합계
return: 두 수의 index를 가진 숫자 배열

예를 들어,
nums은 [4, 9, 11, 14] target은 13

nums[0] + nums[1] = 4 + 9 = 13 이죠?

그러면 [0, 1]이 return 되어야 합니다.

가정

target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다

나의 풀이

const twoSum = (nums, target) => {
  
  let arr = [];
  
  for(let i = 0; i < nums.length; i++) {
    
    for(let j = i+1; j < nums.length; j++) {
      
  if(nums[i] + nums[j] === target) {
    
    arr.push(i,j);
    
      }
    }
  }
  return arr;
}

twoSum([4, 9, 11, 14], 13);
console.log(twoSum([4, 9, 11, 14], 13));

1일차 문제라서 쉬울 줄 알았는데, 문제를 많이 풀어버릇 하지 않아서 그런지 낯설고 어렵게만 느껴졌다..🫠
내 자바스크립트 지식의 한계도 한 몫 했겠지만...너 왜이렇게 어렵니 (^- ㅠ)?
문제를 이해하는 것 부터 꽤 시간이 걸렸고 어떻게 접근해야 할지 감도 안오는데 시간 내에 풀고 싶다는 조급함과 강박 때문인지 더더욱 머리가 안돌아갔다. 🥹 이런 생각 하면 안되는디..약간 자괴감이..


아무튼 침착하게 하나씩 뜯어보며 시작

  1. 새로운 배열에 새로운 값을 넣기 위해 빈 배열을 하나 만들어준다.

  2. 배열을 반복하여 순회하며 값을 더해봐야 하기 때문에 for문을 사용해야겠다!

  3. 배열 전체 중 2개의 값을 각각 더해서 target 의 값과 일치 시켜야 하기 때문에 for 문을 두개 사용하는 이중 for 문을 사용해야겠다!

  4. 첫번째 for문(i)이 0일때, 두번째 for문(j)은 그보다 하나 더 큰수로 시작한다
    -> 첫번째 for문(i)이 기본값 0으로 시작했기 때문에 두번째 for문(j)은 0을 제외한다.

  5. 첫번째 for문(i)과 두번째 for문(j)의 각각의 요소를 더한 결과값이 target의 값과 같으면 arr라는 배열에 추가하고 반환한다


흠.

문제를 조금만 더 집중해서 분석했다면 문제를 푸는 시간이 많이 줄어들지 않았을까?
그리고 문제가 요구하고자 하는 핵심이 무엇인지 파악하는 능력 또한...
이런걸 요구하네! -> 그렇다면 이런 문법을 사용해야겠다! 까지의 과정이 너무 길기 때문에
문법 공부는 물론이고 문제 분석 능력을 기를 수 있도록 더더욱 노력 해야겠다. 🥹
어렵다 ^-^... 하지만 해낼 것.

profile
완벽하지 않아도 기록하려고 노력하기 😅

0개의 댓글