Code Kata #1 twoSum

kich555·2021년 9월 19일
0

Code Kata

목록 보기
1/7

💻TwoSum

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

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

☕첫번째 풀이

const twoSum = (nums, target) => {

  const b = [];
  
    for(i=0; i<nums.length; i++){
      for(j=1; j<nums.length; j++){
        if (nums[i] + nums[j] === target) {
         // return [i,j]

          b.push(nums.indexOf(nums[i]));
          b.push(nums.indexOf(nums[j]));
        }
      }
    }
return b;
}

빈 배열 B를 만들고 반복문을 2번 돌려 조건에 해당하는 index를 빈 배열 b에 채워넣었다.

💡두번째 풀이

const twoSum = (nums, target) => {

  //const b = [];
  
    for(i=0; i<nums.length; i++){
      for(j=1; j<nums.length; j++){
        if (nums[i] + nums[j] === target) {
          return [i,j]

         //b.push(nums.indexOf(nums[i]));
         //b.push(nums.indexOf(nums[j]));
        }
      }
    }
//return b;
}

요즘 JS 메모리 할당에 대해서 심심풀이로 찾아보고 있는데,
굳이 빈 배열 b라는 변수를 생성해서 '메모리 공간 할당', '접근', '수정' 등 내부적으로 몇가지 절차가 실행되게끔 짠 코드가 좋은 코드일지란 의문이 들었다.
그래서 빈 배열 'b'를 없애고 코드를 리팩토링 해보았다.

역시 빈 배열을 사용하지 않는 코드가 조금 더 성능이 좋았다.

JS function benchmark등에 대해 찾아보니 브라우저마다 성능이 천차만별이라 한다.. 
아마 브라우저 내의 JS엔진 구동 방식에 따른 차이이리라
profile
const isInChallenge = true; const hasStrongWill = true; (() => { while (isInChallenge) { if(hasStrongWill) {return 'Success' } })();

0개의 댓글