[Algorithm #1] 숫자 배열과 특정 수 (feat. 중첩 for문)

Kayoung Kim·2021년 10월 4일
0

Algorithm

목록 보기
1/4
post-thumbnail

Assignment

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

문제 찾기

  1. 숫자배열, 특정수 인자(nums, target)를 넣은 twoSum 함수를 만든다.
  2. return 값이 담길 빈 array를 만든다.
  3. 한개의 배열에서 2개의 인자를 뽑는다.
  4. 2개의 인자를 더한 값이 target과 맞는지 확인한다.
  5. 맞다면, 해당하는 2개 인자의 index를 return

문제 해결

const twoSum = (nums, target) => {
  let indexArr = [];
  
  for (let i = 0; i < nums.length; i++) {
    for (let j = 0; j < nums.length; j++) {
  	if ((nums[i] + nums[j]) === target) {  
    indexArr = [i, j]; 
    //숫자를 뽑고 싶다면 [num[i], num[j]];
    return indexArr;
    }
   }
  }
}

for 중첩문

  • 하나의 배열에서 여러가지 요소를 가져와야 할 때 for문을 중첩해서 쓸 수 있다.
  • for문 안에 for문, while문이 들어갈 수 있으며, 반대로 while문 안에 while문, for문이 들어갈 수도 있다.
for(초기조건1; 종결조건1; 증감식1;) { //외부반복문
  for(초기조건2; 종결조건2; 증감식2;) { //내부반복문
    반복할 명령문;
  }
}

동작 과정

  1. 밖에 있는 for문이 한 번 실행될 때마다, 안에 있는 for문이 모든 반복을 실행하게 된다.
  2. 내부 for문의 동작이 완료되면 다시 밖에 있는 for문이 한 번 반복하고, 내부 for문이 다시 동작을 반복한다.
  • 외부 for문이 5번 반복, 내부 for문이 3번 반복하는 형태라면 총 15번의 동작이 실행된다.
  • 초기화는 한번만 실행된다. 이후 조건식을 판단해서 결과가 true가 되면 내부 for문으로 진행한다.
  • 안에 있는 반복문이 완료되면 외부 반복문으로 들어와 증감식(i++)을 실행하고, 조건식을 다시 판단한다.
  • true가 되면 역시 앞선 동작을 반복하고 false면 동작을 모두 완료하게 된다.

0개의 댓글