Code Kata - 1

park_kyo_su·2021년 6월 22일
0

Code Kata

목록 보기
1/4
post-thumbnail

앞으로 다양한 알고리즘을 만나게될 코드카타를 시작하였다.
계속 코드를 작성하면서 이런 로직이 맞을가 라는 의문이 들고 확신이 없을때가 있는데 코드카타를 꾸준히 진행해 나의 개발 근육을 💪벌크업!! 시켜야겠다.

코트카타를 진행함에 있어 목표는 다음과 같다.

✔️ 대화를 통한 문제 해결 능력을 기릅니다.
✔️ 컴퓨터 공학의 기본 자료구조 및 알고리즘을 익힙니다.
✔️ 자바스크립트에 대한 이해도를 높입니다.
✔️ 수료 후 취업 준비 기간 중 있을 실제 코딩테스트의 수준을 체험한다.

알고리즘을 보고 무조건 코드를 치는데에만 몰두하지 말고,
하나 하나 구현해야 하는 ToDoList를 작성 해야겠다.
이를 바탕으로 팀원과 어떠한 방식으로 접근할지 대화를 해야겠다.

  1. 풀지 못하겠다고 조급하지 않기
  2. 문제를 받았을때 구현해야 할 조건들을 리스트로 작성할 것
  3. 다른 동기들의 코드를 보며 부족한 점이 있다면 refactoring!

Code Kata - Quiz 1

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개 밖에 없다고 가정하겠습니다.

Soluntion🐳

내 솔루션

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

  return newArr;
}

재현님 솔루션!

const twoSum = (nums, target) => {
  for (i = 0; i < nums.length; i++) {
    if(nums.indexOf(target-nums[i]) != -1) {
      return [i, nums.indexOf(target-nums[i])];
    }
  }
}

배운점🤸

처음에 내가 접근했던 방식은 빈배열에 push하는 것이 아닌
단순히 for문을 돌면서 풀려고 했었다. 하지만 너무 코드가 길어지고
해결하지 못하다가 지수님의 팁으로
빈 배열에 push하는 방식으로 진행하여 해결하였다.
처음 사고방식의 스타트가 중요하다는 것을 느겼다.

재현님 코드는 처음 봤을때 감탄만 했다.
indexOf를 활용한 접근을 생각도 못했는데 정말 적절한 메서드를 활용한 풀이였다.

indexOf
stringValue에서 특정한 문자열의 위치(index)를 반환한다.
탐색하려는 문자열이 존재하지 않는다면 -1을 반환한다.

profile
이사중 ! https://dpark-log.tistory.com/14

0개의 댓글