for...of을 사용하면 왜 배열이 안나올까?

무과장·2023년 5월 22일
0

javascript

목록 보기
5/11

머쓱이보다 키 큰 사람에서 for...of에 대해 배웠다.
그때 내가 했던 질문이 있었다.

function solution(array, height) {
    let count = 0
    for (i of array){
        if(i > height){
            count = count +1
        }
    }
    return count;
}

이런 코드였고

내가 가졌던 의문과 답은 이거였다.

나의 의문이 해결되는 듯 했지만 다음 중복된 숫자 개수, 피자 나눠 먹기(1),짝수 홀수 개수에서 또 위에서 해결한 듯한 의문이 들었다.
짝수 홀수 개수를 세는 문제였다.

function solution(num_list) {
    var answer = [0, 0];
    for(i of num_list){
        if(i % 2 == 0){
            answer[0] = answer[0] + 1;
        }else{
            answer[1] = answer[1] + 1;
        }
    }
  return answer;
}

정답 코드는 이것.
또 다시 의문이 들기 시작했다.
answer[0] = answer[0] + 1 이걸 하면 배열이 나와야 하는 거 아닌가?
그리고 그 배열의 길이를 알아야하는 거니까 .length를 붙여줘야하는 거 아닌가?

머쓱이 키 재는 문제에서 for...of를 마스터 한 것 같았는데 왜 이런 의문이 생길까?

궁금증을 해결하기 위해 말로 풀어봤다.

function solution(num_list) {
    var answer = [0, 0];
    for(i of num_list){ //num_list원소를 뽑아서 배열.length만큼 for문을 돌리겠다.
        if( i% 2==0){   //만약 배열에서 뽑은 그 원소를 2로 나눴을 때 나머지가 0이라면
         answer[0] +=1;//answer[0]자리에 answer[0](=즉, 0)에 1을 더해라... 한 바퀴 더 돌면 answer[0]자리에 answer[0](=즉, 1)에 1을 더해라...계속 반복
        }else{
         answer[1] +=1;//answer[1]자리에 answer[1](=즉, 0)에 1을 더해라
        }
    }
    
         return answer;
}

아! 이제 이해가 되었다.

for...of를 사용하면 반복문을 돌렸을 때 배열이 나오지 않고 숫자만 덜렁 나온다.
그 이 문제 같은 경우는 for문을 돌려서 나온 숫자를 나중에 배열에 넣어주는 방식이었다.

function solution(num_list) {
    var answer = [0, 0];
    for(i of num_list){ 
        if( i% 2==0){   
         return answer[0] +=1;
        }else{
         return answer[1] +=1;
        }
    }

이렇게 하면 숫자가 나온다.

사실 머쓱이 키에서는 이해가 되어서 넘어가고, 짝수 홀수 개수를 세는 문제에서는 대충 이해가 되니까 의문이 생겼더라도 흐린 눈을 하고 넘어갔었다...

그렇게 넘어갔는데!! 그 다음 문제(클릭)에서 완전히 막혀버렸다.
for...of 문제는 마스터했다고 생각했는데 아니었다.
역시 궁금증이 생기면 해결을 하고 넘어가야한다.
이렇게 직접 의문이 생겨 파 본 문제는 평생 기억에 남는 법이다.
흐린 눈 멈춰!

profile
느리더라도 꾸준히 확실하게.

0개의 댓글