본문 바로가기

TIL

[TIL-122] 위코드 22일차: ReactJS / 코드 카타

ReactJS

 

Component의 Props

개념

 

 

참고

https://www.daleseo.com/react-button-component/

https://react.vlpt.us/basic/05-props.html

 

 

 


 

코드 카타

 

더한 값이 target이 나오는 nums 배열의 두 숫자 조합

문제

nums 배열과 특정한 수인 target을 인자로 받는 twoSum 함수는, nums 배열에서 두 숫자를 뽑아 더한 값이 target이 되는 조합의 두 index를 요소로 갖는 배열을 반환한다.

 

코드

const twoSum = (nums, target) => {

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

twoSum 함수가 실행되면,

  1. 첫번째 인자로 받은, 숫자들로 이뤄진 배열(nums)에서 두 숫자를 뽑는다.
    1. 첫번째 수를 먼저 뽑는다. 반복문을 사용하여 0에서 마지막(배열길이-1) 인덱스의 숫자를 뽑는다.
    2. 두번째 수를 뽑는다. 첫번째 수가 뽑힌 인덱스를 다시 뽑지 않기 위해, i보다 큰 인덱스에 해당하는 숫자를 뽑는다.
  2. 두 수를 비교해서 두번째 인자로 받은 값(target)과 비교한다.
  3. 같다면 그 때의 인덱스 값 i, j를 배열의 요소로 담아 반환한다.

 

수정 전 코드 

const twoSum = (nums, target) => {

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

let j = 0 

  • 문제 : j도 0에서부터 시작하려고 했는데 그럼 i와 j가 겹쳐서 중복된 검사를 진행하게 된다.
  • n개의 숫자 중 두 숫자를 뽑을 조합을 생각하면, i를 0에서부터 n-1까지 다 훑을 때 j는 i로 선택되지 않은 수를 뽑아야 한다. 예를 들어, i가 2일 때 첫번째 숫자와 두번째 숫자가 포함된 조합은 이미 다 나왔고 세번째 숫자가 i에서 뽑혔기 때문에 j는 i보다 하나 큰 3, 즉 네번째 숫자부터 뽑아야 한다.