이번 글에서는 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 값만 변경하면 원하는 크기의 패턴을 자유롭게 출력할 수 있으니 여러 값으로 테스트해 보시길 권장합니다.