C++에서는 다양한 형태의 피라미드 패턴을 만들 수 있습니다. 이러한 패턴은 대부분 중첩 for 루프(nested for loop)를 활용해 구현합니다. 대표적으로 만들 수 있는 피라미드 패턴은 다음과 같습니다.
기본 피라미드 패턴
가장 기본적인 피라미드를 출력하는 코드는 다음과 같습니다.
예제
#include <iostream>
using namespace std;
int main() {
int n = 6, i, j;
for (i=1; i<=n; i++) {
for(j=1; j<=i; j++ ) {
cout << "* ";
}
cout << endl;
}
return 0;
}
출력 결과
* * * * * * * * * * * * * * * * * * * * *
위 프로그램은 루프 변수 i와 j를 사용하는 두 개의 for 루프로 구성되어 있습니다. 바깥쪽 for 루프는 피라미드의 행(row) 수를 제어하고, 안쪽 for 루프는 각 행에 출력되는 별(*)의 개수를 결정합니다. 즉, i번째 행에는 정확히 i개의 별이 찍히도록 동작합니다. 핵심 로직은 다음 코드 조각과 같습니다.
for (i=1; i<=n; i++) {
for(j=1; j<=i; j++ ) {
cout << "* ";
}
cout << endl;
}
회전된 피라미드 패턴
회전된 형태의 피라미드를 출력하는 코드는 다음과 같습니다.
예제
#include <iostream>
using namespace std;
int main() {
int n = 6, k = 2*n - 2;
for (int i=0; i<n; i++) {
for (int j=0; j<k; j++)
cout <<" ";
for (int j=0; j<=i; j++ )
cout << "* ";
k = k - 2;
cout << endl;
}
return 0;
}
출력 결과
* * * * * * * * * * * * * * * * * * * * *
위 프로그램 역시 i와 j를 루프 변수로 사용하는 두 개의 중첩 루프로 이루어져 있습니다. 변수 k는 2*n - 2 값으로 초기화되며, 각 행이 진행될 때마다 2씩 감소합니다. 바깥쪽 for 루프는 피라미드의 전체 행 수를 담당하고, 첫 번째 안쪽 루프는 별 앞에 출력될 공백의 개수를 지정하며, 두 번째 안쪽 루프는 각 행에 출력될 별의 개수를 지정합니다. 공백의 개수를 단계별로 줄여가면서 별을 오른쪽으로 밀어내는 방식으로 회전된 피라미드 모양이 완성됩니다.
핵심 로직은 다음 코드 조각으로 확인할 수 있습니다.
for (int i=0; i<n; i++) {
for (int j=0; j<k; j++)
cout <<" ";
for (int j=0; j<=i; j++ )
cout << "* ";
k = k - 2;
cout << endl;
}