이 튜토리얼에서는 C++를 사용해 주어진 연(Kite) 패턴을 출력하는 프로그램을 자세히 살펴보겠습니다.
입력값은 N=5로 가정합니다. 우리의 목표는 전체 높이가 2N+1, 즉 총 11줄에 해당하는 연 모양 구조를 화면에 출력하는 것입니다. 이 구조는 위쪽의 완성된 다이아몬드 형태 9줄과 아래쪽의 불완전한 다이아몬드 형태 2줄로 이루어져 있습니다.
예제 코드
#include <bits/stdc++.h>
#include <stdlib.h>
using namespace std;
int main(){
int i, j, k, sp, space = 4;
char prt = '$';
// 첫 번째 다이아몬드의 윗부분 출력
for (i = 1; i <= 5; i++){
// 앞부분 공백 출력
for (sp = space; sp >= 1; sp--){
cout << " ";
}
// $ 문자 출력
for (j = 1; j <= i; j++){
cout << prt;
}
for (k = 1; k <= (i - 1); k++){
if (i == 1){
continue;
}
cout << prt;
}
cout << "\n";
space--;
}
space = 1;
// 첫 번째 다이아몬드의 아랫부분 출력
for (i = 4; i >= 1; i--){
for (sp = space; sp >= 1; sp--) {
cout << " ";
}
for (j = 1; j <= i; j++){
cout << prt;
}
for (k = 1; k <= (i - 1); k++){
cout << prt;
}
space++;
cout << "\n";
}
space = 3;
// 두 번째 불완전한 다이아몬드 출력
for (i = 2; i <= 5; i++){
if ((i % 2) != 0){
for (sp = space; sp >= 1; sp--){
cout << " ";
}
for (j = 1; j <= i; j++){
cout << prt;
}
}
if ((i % 2) != 0) {
cout << "\n";
space--;
}
}
return 0;
}
실행 결과
$
$$$
$$$$$
$$$$$$$
$$$$$$$$$
$$$$$$$
$$$$$
$$$
$
$$$
$$$$$
코드 작동 원리
- 다이아몬드 상단 부분: 바깥 반복문이 1부터 5까지 순회하면서, 각 줄마다 앞쪽 공백을 먼저 출력한 후 $ 문자를 홀수 개씩 늘려가며 출력합니다. 한 줄이 완성될 때마다 공백 변수 space를 1씩 감소시켜 피라미드 모양을 만듭니다.
- 다이아몬드 하단 부분: 반복문이 4부터 1까지 역순으로 순회하며, 공백은 점점 늘리고 $ 문자는 줄여나가 위쪽과 대칭되는 구조를 완성합니다.
- 연 꼬리 부분: 세 번째 반복문은 홀수 번째 줄만 골라 출력하여 불완전한 다이아몬드 형태의 꼬리를 그려냅니다. 짝수 번째 줄은 건너뛰기 때문에 최종적으로 두 줄만 출력됩니다.