조건문의 중첩처럼 반복문 역시 중첩이 가능합니다.
반복문 내에 또다른 반복문을 둠으로써 2차원 배열의 요소를 처리하거나, 복잡한 패턴의 출력, 특정 조건에 따른 반복 계산 등에 활용할 수 있습니다. 기본적인 구조는 아래와 같습니다.
위 예제에서 보듯 외부 반복문과 내부 반복문 모두 세번씩 반복되는 걸 확인할 수 있습니다. 내부 반복문은 외부 반복문에 포함되어 있기에 외부 반복문 실행 시 내부 반복문이 매번 재실행되어 세번씩 반복됩니다. 결과적으로 내부 반복문은 외부 반복문의 횟수에 내부 반복문을 곱한 횟수만큼 반복이 됩니다. 위의 예제에선 각각 3회씩 반복되도록 했기에 내부 반복문은 총 9회 반복이 됩니다.
중첩 반복문의 경우 아래와 같이 활용될 수 있습니다.
구구단 출력
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <iostream>
int main() {
for (int i = 1; i <= 9; ++i) { // 바깥쪽 반복문: 1단부터 9단까지
for (int j = 1; j <= 9; ++j) { // 안쪽 반복문: 각 단의 1부터 9까지 곱셈
std::cout << i << " * " << j << " = " << i * j << std::endl;
}
std::cout << std::endl; // 한 단이 끝날 때마다 줄바꿈으로 구분
}
return 0;
}
|
cs |
별 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <iostream>
int main() {
int width, height;
std::cout << "가로 길이를 입력하세요: ";
std::cin >> width;
std::cout << "세로 길이를 입력하세요: ";
std::cin >> height;
for (int i = 0; i < height; ++i) {
for (int j = 0; j < width; ++j) {
std::cout << "* ";
}
std::cout << std::endl;
}
return 0;
}
|
cs |
while문을 활용한 중첩
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include <iostream>
int main() {
int rows = 5; // 삼각형의 높이
int i = 0;
while (i < rows) { // 외부 반복문: 각 행에 대하여
int j = 0;
while (j <= i) { // 내부 반복문: 해당 행에서 별을 몇 개 출력할지 결정
std::cout << "* ";
++j;
}
std::cout << std::endl; // 한 행이 끝나면 줄바꿈
++i;
}
return 0;
}
|
cs |
중첩 반복문을 사용할 때는 성능에 주의해야 합니다. 위 예제들에선 한번만 중첩을 했지만 반복문 < 반복문 <반복문... 처럼 그 이상도 중첩이 가능합니다. 하지만 두 번 이상은 왠만하면 사용하지 않는 것이 좋습니다. 중첩의 깊이가 깊어질수록 계산량이 기하급수적으로 증가할 수 있기 때문입니다. 따라서 가능한 한 반복문의 깊이를 최소화하고, 필요한 경우 최적화 방법을 고려해야 합니다.
중첩 반복문은 다양한 프로그래밍 문제를 해결하는 데 매우 유용하지만, 복잡도와 성능을 항상 염두에 두고 사용해야 합니다.
'프로그래밍 > c++' 카테고리의 다른 글
c++ 19. 함수 오버로딩 (0) | 2024.02.23 |
---|---|
c++ 18. 함수 function (0) | 2024.02.22 |
c++ 16. 조건문 중첩 (0) | 2024.02.02 |
c++ 15. while 반복문 (2) | 2024.01.30 |
c++ 14. for 반복문 (1) | 2024.01.26 |
댓글