하삼각 행렬(Lower Triangular Matrix)은 주대각선(main diagonal) 위쪽에 있는 모든 요소를 0으로 설정한 행렬입니다. 즉, 주대각선과 그 아래쪽 요소만 값을 가지며, 나머지 위치는 모두 0이 됩니다.
핵심 조건
하삼각 행렬을 만들기 위해서는 다음 조건을 사용합니다. 행 인덱스 i가 열 인덱스 j보다 크거나 같으면 해당 요소를 그대로 출력하고, 그렇지 않으면 0을 출력합니다.
if (i >= j)
Console.Write(A[i, j] + "\t");
else
Console.Write("0\t");
전체 예제 코드
아래의 완성된 C# 코드를 실행하여 하삼각 행렬을 직접 확인해 보세요. 사용자로부터 행렬의 크기와 요소를 입력받은 후, 원본 행렬과 하삼각 형태로 변환된 행렬을 차례로 출력합니다.
using System;
using System.Linq;
class Demo {
static void Main() {
int m, n, i, j;
Console.Write("행렬의 행과 열 개수를 입력하세요: ");
m = Convert.ToInt16(Console.ReadLine());
n = Convert.ToInt16(Console.ReadLine());
int[] A = new int[10, 10];
Console.Write("\n행렬의 요소를 입력하세요: ");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
A[i, j] = Convert.ToInt16(Console.ReadLine());
}
}
Console.Clear();
Console.WriteLine("\n원본 행렬");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
Console.Write(A[i, j] + "\t");
}
Console.WriteLine();
}
Console.WriteLine("\n하삼각 행렬");
for (i = 0; i < m; i++) {
Console.Write("\n");
for (j = 0; j < n; j++) {
if (i >= j)
Console.Write(A[i, j] + "\t");
else
Console.Write("0\t");
}
}
Console.ReadLine();
}
}
실행 결과 예시
프로그램을 실행하면 먼저 행렬의 행과 열 개수를 입력받고, 이어서 각 위치의 요소를 순서대로 입력합니다. 입력이 완료되면 콘솔 화면이 지워진 후 원본 행렬과 주대각선 위의 요소가 모두 0으로 대체된 하삼각 행렬이 출력됩니다.
행렬의 행과 열 개수를 입력하세요:
3
3
행렬의 요소를 입력하세요:
1 2 3
4 5 6
7 8 9
원본 행렬
1 2 3
4 5 6
7 8 9
하삼각 행렬
1 0 0
4 5 0
7 8 9
정리
하삼각 행렬 변환의 핵심은 단순히 i >= j 조건 하나입니다. 이 조건을 활용하면 반복문 안에서 각 요소의 위치를 판별하여, 주대각선 아래쪽 요소는 그대로 두고 위쪽 요소만 0으로 바꿀 수 있습니다. 같은 원리를 응용하면 상삼각 행렬(Upper Triangular Matrix)도 i <= j 조건으로 손쉽게 구현할 수 있습니다.