이 글에서는 프로그램 실행 중 키보드로 3x3 행렬, 즉 총 9개의 요소를 2차원 배열에 입력받는 방법을 알아봅니다.
입력받은 배열과 for 반복문을 활용하면 3x3 행렬에서 하단 삼각형(lower triangle) 요소만 골라서 출력할 수 있습니다.
하단 삼각형 출력 로직
하단 삼각형이란 행렬에서 대각선을 기준으로 왼쪽 아래에 위치한 요소들을 의미합니다. 핵심 조건은 바로 인덱스 비교입니다. 첫 번째 인덱스(행)가 두 번째 인덱스(열)보다 크거나 같으면(1st index >= 2nd index) 하단 삼각형 영역에 해당하므로 값을 출력하고, 그렇지 않은 자리에는 공백을 출력합니다.
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i>=j) // 하단 삼각형 조건: 행 인덱스 >= 열 인덱스
printf("%d",array[i][j]);
else
printf(" "); // 하단 삼각형이 아닌 자리는 공백 출력
}
printf("\n");
}전체 프로그램
다음은 3x3 2차원 배열에서 하단 삼각형 요소만 출력하는 C 프로그램 전체 코드입니다.
#include<stdio.h>
int main(){
int array[3][3],i,j;
printf("enter 9 numbers:");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
scanf("%d",&array[i][j]);
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i>=j) // 하단 삼각형 조건: 행 인덱스 >= 열 인덱스
printf("%d",array[i][j]);
else
printf(" "); // 하단 삼각형이 아닌 자리는 공백 출력
}
printf("\n");
}
return 0;
}실행 결과
프로그램을 실행하면 아래와 같은 결과를 확인할 수 있습니다.
enter 9 numbers: 1 2 3 1 3 4 4 5 6 1 13 456
출력 결과를 보면 각 행마다 조건을 만족하는 요소만 남습니다. 첫 번째 행에서는 [0][0] 위치의 1만 출력되고, 두 번째 행에서는 1과 3이 이어져 "13"으로, 세 번째 행에서는 4, 5, 6이 모두 출력됩니다. 숫자 사이에 공백을 넣고 싶다면 printf 서식 문자열에 공백을 추가하면 됩니다.
응용: 상단 삼각형 출력하기
같은 원리를 응용하면 주어진 3x3 행렬에서 상단 삼각형(upper triangle) 요소만 출력하는 프로그램도 쉽게 작성할 수 있습니다. 조건식만 i >= j에서 i <= j로 바꾸면 됩니다.
예제 코드
#include<stdio.h>
int main(){
int array[3][3],i,j;
printf("enter 9 numbers:");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
scanf("%d",&array[i][j]);
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i<=j) // 상단 삼각형 조건: 행 인덱스 <= 열 인덱스
printf("%d",array[i][j]);
else
printf(" "); // 상단 삼각형이 아닌 자리는 공백 출력
}
printf("\n");
}
return 0;
}실행 결과
상단 삼각형 프로그램의 실행 결과는 다음과 같습니다.
enter 9 numbers: 2 3 4 8 9 6 1 2 3 2 3 4 9 6 3
첫 번째 행의 세 요소가 모두 출력되고, 두 번째 행에서는 대각선부터 오른쪽 요소인 9와 6이, 세 번째 행에서는 마지막 요소인 3만 출력되는 것을 확인할 수 있습니다.