C++의 중첩 for 반복문을 활용하면 콘솔 화면에 다이아몬드(마름모) 모양의 별(*) 패턴을 손쉽게 출력할 수 있습니다. 이 글에서는 다이아몬드 모양을 출력하는 C++ 프로그램의 알고리즘, 예제 코드, 그리고 실제 실행 결과까지 단계별로 자세히 살펴보겠습니다.
알고리즘
시작
행의 개수 n, 즉 다이아몬드 모양의 크기를 입력받습니다.
변수 i, j를 선언하고 space를 초기화합니다.
space를 n-1로 설정합니다.
i가 1부터 n까지 외부 for 반복문을 실행합니다.
공백을 출력하는 내부 for 반복문을 실행합니다.
space를 1씩 감소시킵니다.
별표(*)를 출력하는 내부 for 반복문을 실행합니다.
위 과정을 역순으로 한 번 더 수행하여 다이아몬드의 아래쪽 절반을 만듭니다.
space를 1로 초기화합니다.
i가 1부터 n까지 외부 for 반복문을 실행합니다.
공백을 출력하는 내부 for 반복문을 실행합니다.
space를 1씩 증가시킵니다.
별표(*)를 출력하는 내부 for 반복문을 실행합니다.
종료
예제 코드
#include<iostream>
using namespace std;
int main() {
int n, i, j, space;
cout<<"Enter number of rows : ";
cin>>n;
space=n-1;
// 다이아몬드 윗부분 출력
for (i=1; i<=n; i++) {
for(j=1; j<=space; j++) {
cout<<" "; // 공백 출력
}
space--;
for(j=1; j<=(2*i-1); j++) {
cout<<"*"; // 별표 출력
}
cout<<"\n";
}
// 다이아몬드 아랫부분 출력 (역순)
space=1;
for (i=1; i<=n; i++) {
for(j=1; j<=space; j++) {
cout<<" "; // 공백 출력
}
space++;
for(j=1; j<=(2*(n-i)-1); j++) {
cout<<"*"; // 별표 출력
}
cout<<"\n";
}
}
실행 결과
Enter number of rows: 4 * *** ***** ******* ***** *** *
이 프로그램은 서로 대칭인 두 개의 반복문 블록으로 구성됩니다. 첫 번째 블록은 공백을 줄이는 동시에 별표를 늘려가며 다이아몬드의 윗부분을 만들고, 두 번째 블록은 그 반대로 공백을 늘리면서 별표를 줄여 아랫부분을 완성합니다. 각 행의 별표 개수는 2×i−1 공식으로 계산되므로 항상 홀수 개가 출력되어 좌우 대칭인 다이아몬드 형태가 완성됩니다.