C++ 프로그래밍을 활용하면 반복문과 조건문만으로도 다양한 모양의 패턴을 화면에 출력할 수 있습니다. 이번 글에서는 위아래가 대칭을 이루는 흥미로운 별(*) 패턴을 출력하는 방법을 알고리즘과 실제 코드 예제를 통해 단계별로 살펴보겠습니다.
알고리즘
패턴을 출력하기 위한 전체적인 절차는 다음과 같습니다.
1단계: 패턴의 크기(n)를 정의한다. 실제 출력 시 크기는 자동으로 두 배가 된다 2단계: 반복문을 사용하여 패턴의 윗부분(상단)을 출력한다 3단계: 반복문을 사용하여 패턴의 아랫부분(하단)을 출력한다
예제 코드
위 알고리즘을 바탕으로 작성한 C++ 코드는 다음과 같습니다.
#include <iostream>
using namespace std;
int main(){
int n=3;
int i,j;
// 패턴의 윗부분(상단)
for (i=1; i<=n; i++){
for (j=1; j<=(2*n); j++){
// 패턴의 왼쪽 부분
if (i<j)
cout<<" ";
else
cout<<"*";
// 패턴의 오른쪽 부분
if (i<=((2*n)-j))
cout<<" ";
else
cout<<"*";
}
cout<<endl;
}
// 패턴의 아랫부분(하단)
for (i=1; i<=n; i++){
for (j=1;j<=(2*n);j++){
// 패턴의 왼쪽 부분
if (i>(n-j+1))
cout<<" ";
else
cout<<"*";
// 패턴의 오른쪽 부분
if ((i+n)>j)
cout<<" ";
else
cout<<"*";
}
cout<<endl;
}
return 0;
}코드 동작 원리
이 코드의 핵심은 중첩 반복문과 조건문의 조합입니다. 바깥쪽 반복문은 행(row)을 담당하고, 안쪽 반복문은 열(column)을 담당합니다.
윗부분에서는 i(행 번호)와 j(열 번호)를 비교하여, 조건에 따라 공백 또는 별을 출력합니다. 왼쪽과 오른쪽을 각각 처리함으로써 대칭 구조가 만들어집니다. 아랫부분은 윗부분과 대칭이 되도록 조건식의 방향을 반대로 설정했습니다.
실행 결과
위 코드를 컴파일하고 실행하면 다음과 같은 흥미로운 패턴이 출력됩니다.
출력
* * * * * * * * * * * * * * * * * * * * * * * *
n=3으로 설정했기 때문에 총 6줄(2×n)의 패턴이 출력되며, 가운데를 기준으로 상하 좌우 모두 대칭인 마름모 형태의 별 패턴을 확인할 수 있습니다. 변수 n의 값을 변경하면 패턴의 크기도 비례하여 커지므로, 직접 값을 바꿔가며 실험해 보는 것도 좋은 학습 방법입니다.