배열로 만드는 합 삼각형(Sum Triangle)은 배열의 원소 개수를 한 개씩 줄여가며 만드는 삼각형 구조입니다. 새롭게 형성되는 배열은 기존 배열에서 인접한 두 정수를 더한 값들로 구성되며, 이 과정은 배열에 원소가 단 하나만 남을 때까지 반복됩니다.
동작 원리 예시
예시를 통해 내용을 더 자세히 살펴보겠습니다.
Array = [3,5,7,8,9]
출력 결과
[106]
[47,59]
[20,27,32]
[8,12,15,17]
[3,5,7,8,9]
과정 설명
첫 번째 배열 : (3 + 5 = 8), (5 + 7 = 12), (7 + 8 = 15), (8 + 9 = 17)
두 번째 배열 : 8 + 12 = 20, 12 + 15 = 27, 15 + 17 = 32
세 번째 배열 : 20 + 27 = 47, 27 + 32 = 59
마지막 배열 : 47 + 59 = 106
재귀 함수를 활용한 구현
위 예시 설명처럼 코드가 동작하려면, 각 단계의 배열에 대해 스스로를 다시 호출하는 재귀 함수(recursive function)가 필요합니다. 재귀 호출을 통해 인접 원소들의 합으로 새로운 배열을 만들고, 배열의 크기가 1보다 작아지면 종료하는 방식입니다.
C 코드 예제
#include<stdio.h>
void printTriangle(int arr[], int n) {
if (n < 1) {
return;
}
int temp[n - 1];
for (int i = 0; i < n - 1; i++) {
int x = arr[i] + arr[i + 1];
temp[i] = x;
}
printTriangle(temp, n - 1);
for (int i = 0; i < n ; i++) {
if(i == n - 1)
printf("%d ",arr[i]);
else
printf("%d, ",arr[i]);
}
printf("\n");
}
int main() {
int arr[] = { 3,5,7,8,9};
int n = sizeof(arr) / sizeof(arr[0]);
printTriangle(arr, n);
}
출력 결과
106
47, 59
20, 27, 32
8, 12, 15, 17
3, 5, 7, 8, 9
코드 동작 방식
printTriangle 함수는 먼저 배열의 길이 n이 1보다 작으면 재귀를 종료합니다. 그렇지 않다면 크기가 n-1인 임시 배열을 생성하고, 인접한 두 원소의 합을 차례대로 저장합니다. 이후 축소된 배열로 재귀 호출을 진행하여 가장 위(원소 하나만 남는 지점)부터 결과를 출력하게 되므로, 최종적으로 삼각형 모양이 아래에서 위로 완성됩니다.