본문 바로가기

Algorithm(Javascript)

알고리즘 문제 1

주어진 배열에서 target이 나올 수 있는 숫자 두개의 조합을 구해야하는 문제다.

 

1.  2중 for문

 

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

 

첫번째 for문은 0번 인덱스부터 그 안에 들어가 있는 for문은 첫번째 for문에서 시작한 인덱스에서 한칸 앞에서 시작한다.

두개의 값이 target값이 같아질때까지 돌고 만약 조건에 만족되면 두개의 인덱스가 들어가 있는 배열을 반환하는 코드다.

 

2.  나머지값으로 탐색하기

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

 

for문 하나만 사용해서 풀이하는 코드다. 일단 첫번째 인덱스부터 순차적으로 검사하는데 target값에서 현재 인덱스의 뺀 값이

nums배열에 존재하면 answer이라는 빈 배열에다가 현재 인덱스와 나머지값의 인덱스를 push해주고 answer배열을

반환해준다. for문을 하나만 쓰고도 풀이가 가능해서 더 효율적인 풀이법이다.

'Algorithm(Javascript)' 카테고리의 다른 글

알고리즘 문제 6  (0) 2021.10.25
알고리즘 문제 5  (0) 2021.10.22
알고리즘 문제 4  (0) 2021.10.21
알고리즘 문제 3  (0) 2021.10.20
알고리즘 문제 2  (0) 2021.10.19