Double for loop에 대한 고찰

be1le·2021년 11월 12일
18

consideration

목록 보기
3/4


이 세상에 존재하는 모든 Double 은 좋은 것이라 생각한 내가 미워 지던 밤 이였다.
Double 치즈 버거나, Double 패티는 그렇게 나를 즐겁게 하는데 Double for loop는 나를 참 많이 힘들게 하였다. 좋게 좋게 블로깅을 안하고 넘어가려 했지만 끝까지 나에게 협조를 해주지 않은 Double for loop를 블로깅으로 혼내 주는 시간을 갖도록하자!

Double for loop란?

출처ㅡ스택오버 플로우
위와 같은 형식으로 이루어져 있다. outerLoop가 innerLoop를 감싸 진행이 된다.
사실 이중for문은 무엇보다도 작동 원리를 이해하는 과정이 중요하다고 생각 한다. 이중for문을 설명할 때 가장 많이 사용되는 구구단을 통해 이중 for문을 이해해 보자!

구구단을 통한 예제

출처ㅡCode Playground

위에 예제에서는 i 의 초기값이 2인 이유는 구구단은 2단부터 시작되기 때문이다 :)
우리가 알듯이 for문이 실행되다 안쪽에서 또for문을 만나면 안쪽의 for문을 먼저 실행시키고 안쪽의 loop가 다 끝나고 빠져나오면 다시 바깥쪽 for문의 loop를 실행하는 구조로 되어있다.
이렇게 이야기하고 보면 이중for문이 상당히 쉽다고 느껴지겠지만, 실제로도 쉽다. 나에게만 어려울 뿐이다.
중요한 건, 바로 안쪽의 for문을 먼저 실행시키고 바로 이 부분이다. 다시 말해 innerLoop가 우선적으로 실행된다는 점을 이용하여 코드를 써내려 가야 범위 설정과 반복문 작성에서의 혼동을 피할 수 있다.
또한 for문이 실제로 배열을 다룰 때 많이 사용되듯이 이중for문은 2차원 배열과도 굉장히 필연적인 존재라고 할 수 있다. 이렇게 중요한 for문의 반복을 멈추게 하려면 우리는 어떻게 해야 할까? 내가 원하는 값을 얻었다면 반복을 그만할 순 없을까? 그 방법에 대해 알아보자!

break, continue, return

우리가 반복문 을 종료하고 싶다면 위의 3가지 방법으로 가능하다. 하지만 셋의 차이점이 있기에 분명 각기 다른 상황에 더 적절한 구문을 사용하여 종료하여야 할 것 이다. 이 셋의 차이점을 알아보자!

break

1 부터 50 까지의 수를 모두 더하는 함수이다. 1 부터 50까지 더하면 1275가 출력 되어야 하지만 sum이 100보다 커지는 순간 break문을 만나 반복을 종료하게 되어 105가 출력 되는 것을 알 수 있다!
이로써 우리는 break는 반복을 종료한다는 것을 알 수 있다!

continue


위 코드는 1부터 50까지의 숫자 중 홀수만 더하는 코드이다.
i를 2로 나눴을 때 나머지가 0이라면 그 숫자는 짝수이므로
continue문을 사용하여 명령을 실행시키지 않고 건너뛰도록 만들어준 것이다.
continue문은 위의 break문과 다르게 반복을 종료하는 것이 아니라 반복을 skip한다고 이해하면 편할 것이다!

return

sum이 100보다 클 때 break문을 실행했을 때는
반복문을 빠져나가 console창에 sum을 출력하고 종료되었다.
그러나 break대신 return을 쓰게 되면
sum이 100보다 커지는 순간 반복문 뿐만 아니라 addNum이란 함수 자체를 종료 시킨다.
그러므로 console창에는 아무 값도 출력 되지 않게 된다.

출처: https://im-developer.tistory.com/69 [Code Playground]

사실 나는 블로깅을 하며 Double for loop에 대해 완벽히 숙지를 했다고 자부할 수 있었다. 이처럼 내가 이해 안되는 개념을 블로깅 한다면 1차원 적으로는 내가 해당 개념을 이해할 수 있고, 2차원적으로는 이글을 읽는 사람들 또한 Double for loop 에 대한 깊은 이해를 할 수 있고, 3차원 적으로는 그러한 사람들이 내 글을 읽어줌 으로써 나 또한 계속 블로그를 써내려 갈 수 있는 것 아닐까?

오늘도 바쁜 와중에도 이렇게 나의 글을 읽어줌 에 깊은 감사함을 느끼며 블로그를 마친다.

profile
그저 그런 개발자가 되지 않겠습니다.

3개의 댓글

comment-user-thumbnail
2021년 11월 12일

버거와 패티를 비유해서 말씀하신게 너무 재밌어요 ㅋㅋㅋ 유익하게 잘 봤습니다

답글 달기
comment-user-thumbnail
2021년 11월 12일

아니진짜 팬될고 같아욬ㅋㅋㅋㅋㅋ 익명인가?저 캐릭터 미쳤다규요 ㅠㅠㅠ 보는맛이 납니다

답글 달기
comment-user-thumbnail
2021년 11월 19일

PC를 말하는 건가요? 무슨 말인지 알 것 같아요. 하나의 루프는 중첩 루프에서 다른 루프 내부에 계층화됩니다. 행과 열에 별을 인쇄하는 것과 같은 2차원 작업에 일반적으로 사용됩니다.

답글 달기