Code Kata repl.it 1

김형석·2022년 5월 9일
0

WECODE

목록 보기
17/33

문제

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) => {
  // 아래 코드를 작성해주세요.
  for (let i = 0; i < nums.length; i++) {
    for (let j = 1; j < nums.length; j++) {
      if (nums[i] + nums[j] === target) {
        return [i,j]
      }
    }
  }
}
// let numsArr = [4, 9, 11, 14]
// twoSum(numsArr, 13)
module.exports = { twoSum };

알고리즘 문제는 언제 풀어도 쉬운 문제가 없는듯하다...
일단 문제 읽고 이해하는 것도 조금 걸렸다. 머리가 안돌아가서 그런걸로!
nums 배열의 두 수를 더해서 target이 나와야하기 때문에 처음에는 if문을 사용하여 nums[0]nums[1],nums[2],nums[3]하고 각각 더하고, 1일때 2,3과, 2일때 3과 더해보며 target이 나오는지 작성하였다.

일단 코드가 너무 길고 깔끔하지가 않아서 다시 머리를 굴려보았다.
코그카타 짝인 윤섭님이 이중 for문을 쓰면 어떻겠냐고 말씀해주셨고 번쩍했다.
이중 for문은 이전에 많이 사용해보았지만 최근에는 쓸 일이 없어 잊고있었다.

return을 두 수의 index를 가진 숫자 배열값으로 구하라고 해서 indexOf()함수도 사용했다... 생각해보니 그냥 for문으로 돌린 i와 j를 return하면 되는 것이었다...ㅜ

profile
블로그 이사 : https://hengxi.tistory.com

0개의 댓글