[TIL]_Code Kata (day1)

🌈 매일 아침 10시에서 11시까지 code kata(알고리즘) 문제를 풀면서 문제 푸는 능력을 기르고 생각하는 시간을 가진다.

  • 정답 맞추기
  • 컴퓨팅 사고 / 문제 해결 역량 보여주기
  • pair programming / communication / driver & navigator
  • 작성한 코드를, 생각하는 로직을 정확한 용어와 함께 말로 설명하는 연습

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

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

예를 들어,
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) => {
	for(let i=0; i<nums.length; i++) {
   for(let j=i+1; j<nums.length; j++) { 

👉 처음에 문제를 보고 중첩for문을 돌려서 i와 i에 더하기 1을 해서 j를 구하는 식은 생각을 했지만 다음부터는 머릿속이 텅 비면서 아무 생각이 들지 못했다. 그래서 여러가지를 찾아보고 물어본 결과 정답을 도출해냈다. 👇

✏️ 문제 풀이
👉 문제를 보고 생각했을 때 배열에 있는 숫자들 중에서 숫자 두개의 합을 구하는 문제라고 생각했다.
👉 nums배열에 [4, 9, 11, 14]라면

  • 4+9, 4+11, 4+14
  • 9+11 9+14
  • 11+14
  for(let i=0; i<nums.length; i++) {
    for(let j=i+1; j<nums.length; j++){
      if(nums[i]+nums[j] === target) { //nums[i,j]->없다.그냥 없다.아무의미 없다. 지완님피셜,nums[i+j]->index만 더한것 
        return [i,j]; // nums[i,j]-> 배열을 반환한것, 
      }
    }
  }
}
twoSum([4, 9, 11, 14],13);

좋은 웹페이지 즐겨찾기