본문 바로가기
프로그래밍/c++

c++ 17. 중첩 반복문

by 지나팩 2024. 2. 19.

조건문의 중첩처럼 반복문 역시 중첩이 가능합니다.

반복문 내에 또다른 반복문을 둠으로써  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

댓글