for 안의 for, for 안의 if

for 안의 for

중첩 반복문.. 이라고 합디다

function getMaxSubSum(arr) {
	let slowMax = 0;
  for (let i = 0; i < arr.length; i++) {
  	let sumStart = 0;
    for (let j = i; j < arr.length; j++) {
    	sumStart += arr[j];
      slowMax = Math.max(slowMax, sumStart);
    }
  }
  return slowMax
}

바깥의 for가 1번, 안쪽의 for가 2번이라 치면
일단 1번에 들어감 -> 그다음 2번 조건에 true면 들어가 ->
2번에서 false가 들때까지 계속 반복해서 돌음 ->
j < arr.length가 false가 되면 다시 1번으로 들어가 ->
다시 2번으로 -> 2번 false 뜰때까지 돌아 -> ...
-> 1번 i < arr.length가 false가 뜨면 이 중첩 반복이 끝난다.!

머... 먼소리야?

초- 악필다제.. 하지만 미래의 나에게 마음이 전해졌을거라 믿는다.
간단히 말하자면

조건이 맞으면 바깥의 for 속으로 들어간다 조건에 맞으면 안쪽의 for로 들어간다 -> 
돌고나서 ++든 --든 처리가 끝나고 또 조건에 맞으면 다시 안쪽의 for가 돈다 -> 
틀리면 이제 바깥의 for로 간다 -> 바깥 for 조건이 맞으면 다시 돈...

핵심은, '조건이 맞으면 돈다'..!! 조건 판단 후에 하는 증가, 감소는 그 '안쪽이 먼저 돌고나서' 작동한다

for 속의 if문

for (let i = 0; i < arr.length; i++) {
    let value = arr[i];
    if (value < a || value > b) {
      arr.splice(i, 1); // index, 지울 개수, 추가할 내용
      i--; // i--를 안넣으면 그 다음 arr[0]을 검사를 못해!!
    	}
	}
}
filterRangeInPlace(arr, 1, 4);

alert(arr);

이거도 앞에꺼랑 원리는 똑같다
조건이 맞으면 들어가서 돈다, 증가, 감소는 안쪽이 먼저 돌고나서 작동한다
조건이 맞으면 for문 안으로 들어간다 ->
value 초기화 ->
if문 조건에 맞으면 안으로 들어간다 ->
얜 반복문이 아니니까 끝까지 오면 i++ 후에 다시 for문을 돈다

좋은 웹페이지 즐겨찾기