icon안동민 개발노트

for 반복문


for 반복문 개요

 for 반복문은 특정 조건이 만족되는 동안 코드 블록을 반복적으로 실행하는 제어 구조입니다. 주로 횟수가 정해진 반복 작업에 사용되며, 배열이나 컬렉션을 순회할 때 자주 활용됩니다.

for 반복문의 기본 구조

for (초기화; 조건; 증감) {
    // 반복 실행될 코드
}
  • 초기화 : 반복문이 시작될 때 한 번만 실행됩니다.
  • 조건 : 각 반복 시작 시 평가되며, 참이면 반복을 계속하고 거짓이면 반복을 종료합니다.
  • 증감 : 각 반복이 끝날 때마다 실행됩니다.

기본 예제 : 1부터 10까지 출력

#include <iostream>
 
int main() {
    for (int i = 1; i <= 10; i++) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}
출력 결과
1 2 3 4 5 6 7 8 9

for 반복문의 다양한 형태

 여러 변수 사용

#include <iostream>
 
int main() {
    for (int i = 0, j = 10; i < j; i++, j--) {
        std::cout << "i: " << i << ", j: " << j << std::endl;
    }
    return 0;
}

 이 예제는 두 개의 변수를 동시에 조작하며 반복합니다.

 무한 루프

for (;;) {
    // 무한히 반복되는 코드
    if (조건) break;  // 루프 탈출 조건
}

 무한 루프는 특정 조건이 만족될 때까지 계속 실행되어야 하는 경우에 사용됩니다.

 범위 기반 for 문 (C++ 11 이상)

#include <iostream>
#include <vector>
 
int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    for (int num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
    return 0;
}

 범위 기반 for 문은 컨테이너의 모든 요소를 순회할 때 매우 편리합니다.

중첩된 for 반복문

#include <iostream>
 
int main() {
    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= 3; j++) {
            std::cout << i << "," << j << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}
출력
1,1 1,2 1,3
2,1 2,2 2,3
3,1 3,2 3,3

 중첩된 for 문은 2차원 배열이나 행렬을 다룰 때 유용합니다.

continue와 break 문

  • continue : 현재 반복을 즉시 종료하고 다음 반복으로 진행
  • break : 반복문을 완전히 종료하고 빠져나옴
#include <iostream>
 
int main() {
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) continue;  // 짝수면 건너뜀
        if (i > 7) break;          // 7보다 크면 반복문 종료
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}
출력
1 3 5 7

for 반복문과 배열

#include <iostream>
 
int main() {
    int arr[] = {10, 20, 30, 40, 50};
    int size = sizeof(arr) / sizeof(arr[0]);
 
    for (int i = 0; i < size; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}

 이 방법은 배열의 인덱스를 직접 사용해야 할 때 유용합니다.

C++ 11 초기화 구문

#include <iostream>
 
int main() {
    for (int i = 0; int arr[] = {1, 2, 3, 4, 5}; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}

 이 형태는 반복문 내에서만 사용되는 배열을 초기화할 때 유용합니다.

주의사항

  1. 무한 루프에 빠지지 않도록 주의해야 합니다. 조건문이 항상 참이 되지 않도록 해야 합니다.
  2. 반복 횟수가 많을 경우 성능에 영향을 줄 수 있으므로, 필요한 만큼만 반복하도록 설계해야 합니다.
  3. 부동소수점 변수를 카운터로 사용할 때는 주의가 필요합니다. 부동소수점의 정확성 문제로 예상치 못한 결과가 발생할 수 있습니다.
  4. 반복문 내에서 반복 변수를 수정하는 것은 피해야 합니다. 의도치 않은 결과를 초래할 수 있습니다.

연습 문제

  1. 1부터 100까지의 합을 계산하는 프로그램을 작성하세요.
  2. 구구단을 출력하는 프로그램을 작성하세요. (중첩 for문 사용)
  3. 피보나치 수열의 처음 20개 항을 출력하는 프로그램을 작성하세요.
  4. 사용자로부터 입력받은 수의 팩토리얼을 계산하는 프로그램을 작성하세요.
  5. 1부터 100까지의 숫자 중 3의 배수와 5의 배수를 모두 출력하는 프로그램을 작성하세요. (continue 사용)


참고 자료