C#에서는 중첩 루프(nested loop)를 활용하면 콘솔 화면에 다음과 같은 다이아몬드 모양을 손쉽게 출력할 수 있습니다.
$ $$$ $$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$ $$$ $
다이아몬드 패턴의 핵심 요소
다이아몬드 형태를 완성하려면 아래 세 가지 요소를 먼저 파악해야 합니다.
- 행(Row)의 개수 — 다이아몬드의 전체 크기를 결정합니다.
- 출력할 기호 — 이번 예제에서는 달러 기호($)를 사용합니다.
- 공백(Empty Space) — 기호 앞에 배치되어 다이아몬드의 대칭 구조를 만듭니다.
위 요소들을 고려하면, 상단 절반에서는 공백이 줄어들고 기호가 늘어나며, 하단 절반에서는 그 반대로 동작하도록 루프를 구성하면 됩니다.
예제 코드
using System;
namespace Program {
public class Demo {
public static void Main(String[] args) {
int i, j, r, d, e;
// 행(row) 개수 = 5
r = 5;
// 출력할 달러 기호 개수
d = 1;
// 빈 공백 개수
e = r - 1;
for (i = 1; i < r * 2; i++) {
// 공백 출력
for (j = 1; j <= e; j++)
Console.Write(" ");
// 달러 기호 출력
for (j = 1; j < d * 2; j++)
Console.Write("$");
Console.WriteLine();
// 상단 절반과 하단 절반을 구분하여 값 조절
if (i < r) {
e--;
d++;
} else {
e++;
d--;
}
}
}
}
}코드 동작 원리
바깥쪽 for 루프는 총 r * 2 - 1회, 즉 9행을 반복합니다. 각 행마다 안쪽 첫 번째 루프가 선행 공백을 출력하고, 두 번째 루프가 홀수 개수(1, 3, 5, 7, 9…)의 달러 기호를 출력합니다.
행 번호 i가 중심 행(r)보다 작으면 공백 수 e는 감소하고 기호 수 d는 증가해 다이아몬드의 윗부분이 넓어집니다. 반대로 중심 행 이후에는 공백이 증가하고 기호가 감소하면서 아랫부분이 좁아지며 완전한 대칭 구조가 만들어집니다.
실행 결과
$ $$$ $$$$$ $$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$ $$$ $