프로그램 설명
숫자 패턴(numerical pattern)은 일정한 규칙, 즉 패턴 규칙(pattern rule)에 따라 만들어진 수열을 의미합니다. 패턴 규칙은 하나 이상의 수학적 연산을 활용하여 수열에서 연속된 숫자들 사이의 관계를 설명할 수 있습니다.
이번 글에서는 C 언어를 이용해 대표적인 두 가지 숫자 패턴을 화면에 출력하는 방법을 살펴보겠습니다.
패턴 예시
패턴 1
1 2 6 3 7 10 4 8 11 13 5 9 12 14 15
패턴 1은 각 행의 시작 값이 행 번호와 같고, 같은 행 안에서는 일정한 간격(5 - 열 위치)만큼씩 커지는 구조입니다.
패턴 2
1
1 2 3
1 2 3 4 5
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7
1 2 3 4 5
1 2 3
1
패턴 2는 위쪽으로 갈수록 홀수 개의 숫자가 늘어나며, 다섯 번째 행을 기준으로 대칭을 이루는 마름모 형태의 피라미드 패턴입니다.
알고리즘
패턴 1: i는 행(row), j는 열(column)을 나타낸다. 5는 5행 5열 패턴을 만들기 위한 값이다. 각 행(i)마다 반복한다. K를 i로 초기화한다. 각 열(j)마다 반복한다. 현재 열(j)에 대한 패턴을 처리한다. K의 값을 출력한다. K를 k + 5 - j로 다시 초기화한다. 패턴 2: 첫 번째 행: 1을 출력한다. 두 번째 행: 1, 2, 3을 출력한다. 세 번째 행: 1, 2, 3, 4, 5를 출력한다. 네 번째 행: 1, 2, 3, 4, 5, 6, 7을 출력한다. 다섯 번째 행: 1, 2, 3, 4, 5, 6, 7, 8, 9를 출력한다. 다섯 번째 행 아래에 네 번째 행부터 첫 번째 행까지 동일한 내용을 역순으로 출력한다.
예제 코드
/* 숫자 패턴 출력 프로그램 */
#include<stdio.h>
int main(){
int i,j,k;
printf("숫자 패턴 1");
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");
}
printf("\n");
printf("숫자 패턴 2");
printf("\n");
printf("\n");
/* 위쪽 피라미드 부분 출력 */
for(i = 1;i<=5;i++){
for(j = i;j<5;j++){
printf(" ");
}
for(k = 1;k<(i*2);k++){
printf("%d",k);
}
printf("\n");
}
/* 아래쪽 역방향 피라미드 부분 출력 */
for(i = 4;i>=1;i--){
for(j = 5;j>i;j--){
printf(" ");
}
for(k = 1;k<(i*2);k++){
printf("%d",k);
}
printf("\n");
}
getch();
return 0;
}
코드 핵심 포인트
- 패턴 1: 바깥 반복문(
i)이 행을 담당하고, 안쪽 반복문(j)이 열을 담당합니다. 변수k는 각 행의 시작 값으로 초기화된 뒤, 한 칸 출력할 때마다5 - j씩 증가하여 계단식으로 늘어나는 숫자 배열을 만듭니다. - 패턴 2: 먼저 공백을 출력해 들여쓰기를 맞춘 후,
k < i*2조건을 이용해 홀수 개의 숫자를 출력합니다. 이후 반복문을 역방향으로 돌려 아래쪽 대칭 부분을 완성합니다.
출력 결과
