Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 단 하나의 루프만 사용해 별(*) 패턴 출력하기

이번 글에서는 continue 문을 활용해 오직 하나의 루프만으로 별(*) 패턴을 화면에 출력하는 방법을 알아보겠습니다. 일반적으로 이중 반복문(중첩 루프)을 사용해야 하는 패턴 출력 문제를, 단일 루프와 조건 분기만으로 해결하는 것이 핵심 과제입니다.

알고리즘

단일 루프로 피라미드 형태의 별 패턴을 만들기 위해서는 행(row)과 열(column)의 역할을 각각 변수가 나누어 담당하도록 설계해야 합니다. 아래는 그 동작 흐름입니다.

START
Step 1 -> 변수 i와 j를 0으로 선언하고, 행의 개수 n을 6으로 설정
Step 2 -> i=1부터 시작하는 for 루프 실행
    IF j < i
       * 출력
       j를 1 증가
       continue로 다음 반복 진행
    End IF
    IF j == i
       줄바꿈(
) 출력
       j를 0으로 초기화
       i를 1 증가
    End IF
Step 3 -> 루프 종료
STOP

핵심 아이디어

이 코드의 핵심은 두 변수의 역할 분담입니다. 변수 i는 현재 몇 번째 행인지를 추적하고, 변수 j는 해당 행 안에서 별을 몇 개 찍었는지를 추적합니다. 조건 j < i가 참이면 별을 하나 출력한 뒤 continue로 즉시 다음 반복으로 넘어가고, j == i가 되면 한 행이 완성된 것이므로 줄바꿈을 출력하고 j를 초기화한 후 i를 증가시켜 다음 행으로 넘어갑니다.

예제 코드

아래는 위 알고리즘을 C 언어로 구현한 전체 코드입니다.

#include <stdio.h>
int main() {
    int i, j = 0;
    int n = 6;
    for ( i = 1; i <= n; ) {
        if( j < i ) {
            printf("*");
            j++;
            continue;
        }
        if(j == i) {
            printf("\n");
            j = 0;
            i++;
        }
    }
    return 0;
}

실행 결과

위 프로그램을 컴파일하여 실행하면 다음과 같은 계단식 별 패턴이 출력됩니다.

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

마무리

이처럼 continue 문과 적절한 조건 분기를 활용하면 중첩 루프 없이도 다양한 패턴을 출력할 수 있습니다. 특히 루프의 증감식을 비워두고 내부 로직에서 직접 카운터를 제어하는 기법은, 반복 흐름을 세밀하게 다루는 연습에 매우 유용합니다. n 값만 변경하면 원하는 크기의 패턴을 자유롭게 출력할 수 있으니 여러 값으로 테스트해 보시길 권장합니다.