C 언어에서 중첩 루프: 초보자를 위한 종합 가이드

안녕하세요, 미래의 코딩 마법사 여러분! 오늘 우리는 C 언어의 마법의 세계인 중첩 루프로 접근해 볼 것입니다. 프로그래밍에 새로운 사람이라면 걱정 마세요 - 이 흥미로운 여정에서 친절한 안내자로서 여러분을 안내할 것입니다. 이 튜토리얼이 끝나면, 프로처럼 루프를 중첩할 수 있을 것입니다!

C - Nested loop

중첩 루프는 무엇인가요?

빠르게 점프하기 전에, 기본 개념부터 시작해 보겠습니다. 상상해 보세요, 귀하의 양말 수납장을 정리하고 있습니다. 다양한 색상의 양말이 있고, 각 색상에는 여러 쌍이 있습니다. 이를 정리하기 위해, 각 색상을 하나씩 선택하고 (外부 루프) 그 색상의 각 양말을 세고 쌍을 이루는 작업을 합니다 (내부 루프). 이는 프로그래밍에서 중첩 루프가 하는 일입니다!

중첩 루프는 하나의 루프 안에 또 다른 루프가 있는 간단한 개념입니다. 내부 루프는 외부 루프의 각 반복에 대해 완전히 실행됩니다. 마치 러시아 인형처럼, 하나를 열면 안에 또 다른 하나가 나오는 것과 같습니다!

중첩 For 루프

가장 일반적인 중첩 루프 형태인 중첩 for 루프부터 시작해 보겠습니다. 간단한 예제를 보여드리겠습니다:

#include <stdio.h>

int main() {
int i, j;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
printf("(%d, %d) ", i, j);
}
printf("\n");
}
return 0;
}

이 코드는 다음과 같은 출력을 생성합니다:

(1, 1) (1, 2) (1, 3)
(2, 1) (2, 2) (2, 3)
(3, 1) (3, 2) (3, 3)

이를 해독해 보겠습니다:

  1. 외부 루프 (i)는 3번 반복됩니다.
  2. 외부 루프의 각 반복에서, 내부 루프 (j)는 3번 반복됩니다.
  3. 내부 루프가 실행될 때마다 ij의 값을 출력합니다.
  4. 내부 루프가 완료된 후, 줄 바꿈 문자 (\n)를 출력합니다.

이는 춤과도 같습니다: 외부 루프가 리드하고, 내부 루프가 따라가서 외부 루프의 각 단계에서 3번 돌아갑니다!

더 실용적인 예제

이제 중첩 루프를 사용하여 곱셈표를 생성해 보겠습니다:

#include <stdio.h>

int main() {
int i, j;
printf("   ");
for (i = 1; i <= 10; i++) {
printf("%4d", i);
}
printf("\n   -------------------------------------\n");
for (i = 1; i <= 10; i++) {
printf("%2d |", i);
for (j = 1; j <= 10; j++) {
printf("%4d", i * j);
}
printf("\n");
}
return 0;
}

이 코드는 아름다운 10x10 곱셈표를 생성합니다. 외부 루프는 행을 대표하며, 내부 루프는 열을 대표합니다. 행 번호와 열 번호를 곱하여 각 셀의 값을 얻습니다.

For 루프 내에 While 루프 중첩

누가 루프를 섞을 수 없다고 했나요? for 루프 내에 while 루프를 중첩해 보겠습니다:

#include <stdio.h>

int main() {
int i, j;
for (i = 1; i <= 5; i++) {
j = 1;
while (j <= i) {
printf("* ");
j++;
}
printf("\n");
}
return 0;
}

이 코드는 다음과 같은 별 모양의 삼각형을 출력합니다:

*
* *
* * *
* * * *
* * * * *

여기서, for 루프는 행의 수를 제어하고, while 루프는 각 행에 별을 출력합니다. 피라미드를 쌓는 것과 같습니다 - 위로 올라갈수록 더 많은 블록을 추가합니다!

C 중첩 루프 예제

이제 이해를 더욱固화시키기 위해 몇 가지 더 예제를 탐구해 보겠습니다:

1. 숫자 패턴

#include <stdio.h>

int main() {
int i, j, rows = 5;
for (i = 1; i <= rows; i++) {
for (j = 1; j <= i; j++) {
printf("%d ", j);
}
printf("\n");
}
return 0;
}

이 코드는 다음과 같은 숫자 패턴을 생성합니다:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

2. 알파벳 패턴

#include <stdio.h>

int main() {
int i, j;
char current = 'A';
for (i = 1; i <= 5; i++) {
for (j = 1; j <= i; j++) {
printf("%c ", current++);
}
printf("\n");
}
return 0;
}

이 코드는 다음과 같은 알파벳 패턴을 출력합니다:

A
B C
D E F
G H I J
K L M N O

3. 소수 체크기

#include <stdio.h>

int main() {
int i, j, flag;
printf("1과 50 사이의 소수는:\n");
for (i = 2; i <= 50; i++) {
flag = 0;
for (j = 2; j <= i/2; j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0)
printf("%d ", i);
}
return 0;
}

이 프로그램은 1과 50 사이의 모든 소수를 찾습니다. 외부 루프는 숫자를 반복하고, 내부 루프는 각 숫자가 소수인지 확인합니다.

결론

중첩 루프는 프로그래머의 도구箱에서 강력한 도구입니다. 이를 통해 다차원 데이터를 다루고 복잡한 패턴을 생성할 수 있습니다. 기억하세요, 연습이 완벽을 이루는 열쇠입니다! 이 예제를 수정해 보거나 자신만의 중첩 루프 프로그램을 만들어 보세요.

이제 우리가 다룰 수 있는 중첩 루프 유형의 빠른 참조 표를 제공합니다:

외부 루프 내부 루프 예제 사용 사례
For For 2D 패턴이나 표 생성
For While 가변 길이 행 연산
While For 고정 연산을 가변 횟수 반복
While While 두 가지 조건 기반 연산

행복하게 코딩하시고, 루프가 항상 완벽하게 중첩되길 바랍니다!

Credits: Image by storyset