Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 피라미드 패턴 만들기: 기본 피라미드부터 회전 피라미드까지


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;
}