중첩 루프(Nested Loop)란?
중첩 루프는 하나의 루프 안에 또 다른 루프가 포함된 구조를 말합니다. 바깥쪽 루프가 한 번 실행될 때마다 안쪽 루프는 자신의 모든 반복 범위를 전부 수행하게 됩니다.
중첩 for 루프의 기본적인 형태는 다음과 같습니다.
for (초기화; 조건; 연산){
for (초기화; 조건; 연산){
문장;
}
문장;
}위 구조에서 안쪽 루프는 바깥쪽 루프가 한 번 반복될 때마다 전체 반복 횟수만큼 실행됩니다.
예제 코드
다음은 중첩 for 루프를 사용하여 1부터 9까지 숫자의 1승부터 4승(네제곱)까지의 거듭제곱표를 출력하는 C 프로그램입니다.
#include <stdio.h>
void main(){
int i, j, k, temp, I=1;
printf("I\tI^2\tI^3\tI^4 \n");
printf("--------------------------------\n");
for ( i = 1; i < 10; i ++) /* 바깥쪽 루프 */{
for (j = 1; j < 5; j ++) /* 첫 번째 중첩 단계 */{
temp = 1;
for(k = 0; k < j; k ++)
temp = temp * I;
printf ("%d\t", temp);
}
printf ("\n");
I++;
}
}
코드 동작 원리
- 바깥쪽 루프(i): 1부터 9까지의 숫자를 차례대로 처리하며, 각 행을 담당합니다.
- 중간 루프(j): 지수를 의미하며, j가 1일 때는 1승(I), 2일 때는 2승(I²)과 같이 계산 대상을 결정합니다.
- 안쪽 루프(k): 거듭제곱을 실제로 계산합니다. temp에 I를 j번 곱하여 I^j 값을 구합니다.
실행 결과
위 프로그램을 컴파일하고 실행하면 다음과 같은 결과가 출력됩니다.
I I^2 I^3 I^4
-----------------------
1 1 1 1
2 4 8 16
3 9 27 81
4 16 64 256
5 25 125 625
6 36 216 1296
7 49 343 2401
8 64 512 4096
9 81 729 6561
결과를 보면 각 행은 밑(base)을, 각 열은 지수(exponent)를 나타냅니다. 예를 들어 마지막 행에서 9의 네제곱인 6561이 정확히 계산되어 출력된 것을 확인할 수 있습니다.