TIL 7

임태진·2020년 12월 6일
0

TIL

목록 보기
6/14
post-thumbnail

오늘은 Repl.it 을 이용해 간단한 알고리즘 문제를 풀어보았다.

✔️문제

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) => {
  result = [];
  for(i=0; i < nums.length; i++) {
    for(j = i+1; j<nums.length; j++) {
      if(nums[i]+nums[j]===target) {
        result.push(i,j);
        return result;
      }
    }
  }
}

module.exports = { twoSum };

✔️해석

nums 와 target을 인자로 받고 이중for문을 사용하여 결과값을 도출했다.
두번째 for문에서 i+1 로 지정해주어 중복되지 않게했다.

✔️Test 모듈

const { twoSum } = require("./index");

describe("UnitTests", function() {
	it("sum1", function() {
		// Failure message: 
		// nums: [1,2,4,9]
		// target: 13
		expect(twoSum([1,2,4,9], 13)).toEqual([2,3]);
	});
	it("sum2", function() {
		// Failure message: 
		// nums: [0,2,9,13,24]
		// target: 24
		expect(twoSum([0,2,9,13,24], 24)).toEqual([0,4]);
	});
	it("sum3", function() {
		// Failure message: 
		// input: [0,1]
		// target: 1
		expect(twoSum([0,1], 1)).toEqual([0,1]);
	});
});
profile
Frontend-Developer

0개의 댓글