4월 11일 TIL

Zeroizer·2022년 4월 11일
0

위코드 TIL

목록 보기
3/4

오랜만에 TIL을 작성하는 것 같다.

TIL을 꾸준히 쓰는 연습을 들여야겠다.

오늘부터 코드카타가 시작됐다.

오늘의 문제는 이거였다.

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

바로 생각난건 for문이었다. 그러나 20분씩 고민을 해봐도 답이 안나오자

팀원과 서로 생각을 공유했다.

그렇게 나온 답은 이중 for문이었다.

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

twoSum([4,9,11,14],13)

이중 for문은 사용해본 적이 없어서 몰랐는데

구구단을 생각하면 쉽다고 한다. 고로 현재 작성된 for 문은 이런식으로 반복된다.

1x2 1x3 1x4
2x1 2x3 2x4
3x1 3x2 3x4
4x1 4x2 4x3

이런식으로 i 값과 j 값의 합이 target인 배열을 구하면 되는 것이다.

물론 for문 방향이

for (let j = nums.length; j>=0; j--)

이런식으로 반대 방향이어도 상관 없다.

i 값과 j 값이 같이 아니하고, i 값과 j 값의 합이 target인 [i,j] 를 리턴하면 끝

혼자서 생각해 내는게 정말 힘들다. 계속 연습해서 로직 구현 실력이 늘었으면 좋겠다.

profile
프론트엔드 개발자 지망생

0개의 댓글