프로그래밍에서 중첩(nesting)이란 동일한 유형의 구조 안에 같은 종류의 또 다른 구조가 포함된 상태를 의미합니다. 따라서 중첩 루프(nested loop)란 루프 안에 루프를 사용하는 것을 말합니다.
중첩 루프가 실행될 때 내부 루프(inner loop)는 외부 루프의 한 번의 반복(iteration) 동안 자신의 모든 반복을 전부 수행합니다. 즉, 외부 루프가 한 번 돌 때마다 내부 루프가 처음부터 끝까지 완전히 실행되는 방식입니다.
파이썬에서의 중첩 루프와 들여쓰기
파이썬(Python)에서 루프의 본문(body)은 들여쓰기(indent) 수준이 한 단계 깊어진 문장들의 그룹으로 정의됩니다. 따라서 중첩 루프를 작성할 때는 내부 루프의 들여쓰기 수준이 외부 루프보다 반드시 더 깊어야 합니다. 이러한 들여쓰기 규칙 덕분에 파이썬은 중괄호 없이도 어느 루프가 어느 루프에 속하는지 명확하게 구분할 수 있습니다.
예시 코드
다음은 중첩 루프의 기본적인 예시입니다.
for x in range(4):
for y in range(4):
print(x, y)실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
0 0 0 1 0 2 0 3 1 0 1 1 1 2 1 3 2 0 2 1 2 2 2 3 3 0 3 1 3 2 3 3
동작 원리 이해하기
출력 결과를 보면 동작 방식을 쉽게 이해할 수 있습니다. 외부 루프 변수 x가 0일 때, 내부 루프 변수 y는 0부터 3까지 네 번 반복됩니다. 이후 x가 1로 증가하면 다시 내부 루프가 처음부터 끝까지 실행됩니다.
결국 외부 루프가 4번, 내부 루프가 매번 4번씩 실행되므로 총 16번(4 × 4)의 출력이 발생합니다. 이처럼 중첩 루프의 전체 반복 횟수는 외부 루프와 내부 루프 반복 횟수의 곱으로 계산됩니다.
중첩 루프는 2차원 리스트 순회, 구구단 출력, 행렬 처리 등 다양한 상황에서 유용하게 활용되므로 기본 동작 원리를 확실히 익혀두는 것이 좋습니다.