파스칼의 삼각형(Pascal's Triangle)은 숫자가 삼각형 형태로 배열된 구조입니다. 삼각형의 양쪽 끝은 항상 숫자 1이며, 삼각형 내부에 있는 각 숫자는 바로 위에 있는 두 숫자의 합으로 계산됩니다.
예를 들어, 파스칼의 삼각형은 다음과 같은 모양을 가집니다.
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
파스칼의 삼각형은 조합론에서 이항계수를 구할 때 활용되는 등 수학적으로 매우 중요한 의미를 지니며, 프로그래밍 학습에서도 반복문과 중첩 루프 개념을 익히기 좋은 대표적인 예제로 자주 사용됩니다.
C# 파스칼의 삼각형 예제 코드
다음은 C#을 사용하여 파스칼의 삼각형을 생성하고 콘솔에 출력하는 프로그램입니다.
using System;
namespace PascalTriangleDemo {
class Example {
public static void Main() {
int rows = 5, val = 1, blank, i, j;
Console.WriteLine("Pascal's triangle");
for(i = 0; i < rows; i++) {
for(blank = 1; blank <= rows-i; blank++)
Console.Write(" ");
for(j = 0; j <= i; j++) {
if (j == 0 || i == 0)
val = 1;
else
val = val * (i - j + 1) / j;
Console.Write(val + " ");
}
Console.WriteLine();
}
}
}
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Pascal's triangle 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
코드 동작 원리 상세 설명
이 프로그램의 핵심은 중첩 for 루프(nested for loop)를 활용하는 것입니다. 코드의 동작 방식을 단계별로 살펴보겠습니다.
1. 외부 루프 - 행 생성
외부 for 루프는 삼각형의 각 행을 만들어냅니다. 변수 i가 0부터 rows(5) 미만까지 반복되면서 총 5개의 행을 생성합니다.
2. 공백 출력 루프 - 삼각형 모양 잡기
내부의 첫 번째 루프는 행 앞에 들어갈 공백을 출력합니다. rows - i만큼 공백을 찍어서 아래로 내려갈수록 왼쪽 여백이 줄어들게 되고, 이를 통해 정삼각형 형태가 만들어집니다.
3. 값 계산 및 출력 루프
두 번째 내부 루프는 실제 숫자 값을 계산하여 출력합니다. 값 계산 로직은 다음과 같습니다.
- 각 행의 첫 번째 값(
j == 0) 또는 첫 번째 행(i == 0)인 경우 값은 항상 1입니다. - 그 외의 경우에는 이전 값에
(i - j + 1)을 곱한 후j로 나누어 새로운 값을 계산합니다. 이는 이항계수 공식을 효율적으로 적용한 방식입니다.
for(i = 0; i < rows; i++) {
for(blank = 1; blank <= rows-i; blank++)
Console.Write(" ");
for(j = 0; j <= i; j++) {
if (j == 0 || i == 0)
val = 1;
else
val = val * (i - j + 1) / j;
Console.Write(val + " ");
}
Console.WriteLine();
}한 행의 모든 값이 출력된 후에는 Console.WriteLine()을 호출하여 줄바꿈을 수행하고, 다음 행의 출력으로 넘어갑니다.
마무리
이처럼 파스칼의 삼각형 프로그램은 중첩 반복문, 조건문, 그리고 수학적 규칙을 하나의 코드로 결합하는 훌륭한 연습 예제입니다. rows 변수의 값을 변경하면 원하는 크기의 삼각형을 손쉽게 출력할 수 있으니, 직접 값을 바꿔가며 실험해 보시기 바랍니다.