C#에서 숫자를 삼각형 형태로 출력하려면 먼저 2차원 배열을 준비해야 합니다. 이 배열은 삼각형의 각 행과 열에 해당하는 값을 저장하는 역할을 합니다.
int[] a = new int[5, 5];
삼각형 모양을 만들기 위해서는 아래와 같이 각 행 앞에 들어갈 공백까지 함께 고려해야 합니다.
1 1 1 1 2 1 1 3 3 1
이 패턴은 흔히 파스칼 삼각형(Pascal's Triangle)이라고 불립니다. 규칙은 간단합니다. 좌우 양 끝 값은 항상 1로 채우고, 그 외의 값은 바로 위 행의 인접한 두 값을 더한 결과가 됩니다. 이제 반복문을 사용해 왼쪽과 오른쪽에 1을 배치하면서 삼각형을 완성해 보겠습니다.
예제 코드
using System;
class Demo {
public static void Main() {
// 2차원 배열 선언
int[] a = new int[5, 5];
for (int i = 0; i < 5; i++) {
// 삼각형 모양을 맞추기 위한 공백 출력
for (int k = 7; k > i; k--) {
Console.Write(" ");
}
// 삼각형의 숫자를 계산하고 출력하는 루프
for (int j = 0; j < i; j++) {
if (j == 0 || i == j) {
// 각 행의 양 끝은 1로 설정
a[i, j] = 1;
} else {
// 위 행의 두 값을 더해 현재 값 계산
a[i, j] = a[i - 1, j] + a[i - 1, j - 1];
}
Console.Write(a[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadLine();
}
}코드 동작 원리
이 코드는 세 개의 중첩 반복문으로 구성되어 있습니다.
- 바깥쪽 루프(i): 삼각형의 행(row) 수를 결정합니다.
- 첫 번째 안쪽 루프(k): 각 행 앞에 출력할 공백 개수를 조절해 삼각형의 대칭 모양을 만듭니다.
- 두 번째 안쪽 루프(j): 각 행의 값을 채웁니다. 행의 시작(j == 0)이나 끝(i == j)인 경우 1을 저장하고, 그렇지 않으면 이전 행의 두 값
a[i-1, j]와a[i-1, j-1]을 더합니다.
실행 결과
1 1 1 1 2 1 1 3 3 1
이처럼 2차원 배열과 중첩 반복문만 활용하면 별도의 라이브러리 없이도 손쉽게 삼각형 형태의 숫자 패턴을 출력할 수 있습니다. 응용하면 피라미드 모양, 다이아몬드 모양 등 다양한 패턴 출력 프로그램으로 확장할 수 있습니다.