프로그램 개요
이 글에서는 C 언어의 이중 반복문(for loop)을 활용하여 자연수를 다음과 같이 열 단위(column-wise) 삼각형 패턴으로 출력하는 방법을 알아봅니다. 중첩 반복문과 규칙적인 증가 공식만 이해하면 누구나 쉽게 구현할 수 있는 대표적인 패턴 출력 문제입니다.
1 2 6 3 7 10 4 8 11 13 5 9 12 14 15
알고리즘
패턴의 규칙을 먼저 파악하면 코드 작성이 훨씬 수월합니다. 핵심 로직은 다음과 같습니다.
i는 행(row)을,j는 열(column)을 나타냅니다.- 숫자 5는 5행 5열 크기의 패턴을 만들기 위한 기준값입니다.
- 각 행(
i)에 대해 반복문을 실행합니다. - 변수
k는 현재 행 번호인i값으로 초기화합니다. - 각 열(
j)마다 현재 값k를 화면에 출력합니다. - 출력 후에는
k = k + 5 - j공식으로 값을 갱신하여 같은 열의 다음 행에 들어갈 숫자를 계산합니다.
예제 코드
/* 자연수를 열 단위로 출력하는 C 프로그램 */
#include<stdio.h>
int main(){
int i,j,k;
printf("Printing the Numbers in Columns wise: ");
printf("\n");
printf("\n");
for(i=1;i<=5;i++){
k = i;
for(j=1;j<=i;j++){
printf("%d ", k);
k += 5-j;
}
printf("\n");
}
getch();
return 0;
}
코드 동작 원리
바깥쪽 반복문은 행을 결정하고, 안쪽 반복문은 그 행에 출력될 숫자의 개수를 결정합니다. 예를 들어 첫 번째 행(i=1)에서는 k가 1로 시작해 하나의 숫자만 출력되고, 두 번째 행(i=2)에서는 k가 2로 시작한 뒤 매번 5-j(첫 번째 열에서는 4, 두 번째 열에서는 3)만큼 증가하여 2, 6이 차례대로 출력됩니다. 이런 식으로 값이 오른쪽으로 갈수록 점점 더 큰 폭으로 증가하기 때문에 위와 같은 대각선 패턴이 완성됩니다.
실행 결과
프로그램을 컴파일하여 실행하면 아래 이미지와 같이 5개 행에 걸쳐 열 단위로 정렬된 자연수 패턴이 출력됩니다.
