Category (Click)
개발보드 덕질하기
🪱

[배열 활용] 큰 수의 계산

앞선 [배열] 문자열 에서는 문자열을 표현하기 위해 배열을 활용하였는데요, 배열에 숫자가 들어가면 수열이 되겠죠. 이번에는 수열에 배열을 활용해보도록 하겠습니다.
가장 대표적인 예시로 큰 수의 계산이 있습니다.
#include <stdio.h> #include <string.h> void multiply(char num1[], char num2[]) { int len1 = strlen(num1); int len2 = strlen(num2); int result[len1 + len2]; // 두 수의 곱의 최대 자릿수는 len1 + len2 memset(result, 0, sizeof(result)); // result 배열 초기화 // 뒤에서부터 한 자리씩 곱셈을 수행합니다. for (int i = len1 - 1; i >= 0; i--) { for (int j = len2 - 1; j >= 0; j--) { int digit1 = num1[i] - '0'; // 문자를 숫자로 변환 int digit2 = num2[j] - '0'; int product = digit1 * digit2; int pos1 = i + j; int pos2 = i + j + 1; int sum = product + result[pos2]; result[pos1] += sum / 10; // 자리 올림 result[pos2] = sum % 10; } } // 결과 출력 int start = 0; while (start < len1 + len2 && result[start] == 0) { start++; } if (start == len1 + len2) { printf("0"); } else { for (int i = start; i < len1 + len2; i++) { printf("%d", result[i]); } } printf("\n"); } int main() { char num1[] = "123456789"; char num2[] = "987654321"; multiply(num1, num2); // 121932631137021795 return 0; }
C
복사
위 코드는 배열을 이용해 long long보다 더 큰 숫자를 계산하는 예시입니다. 메모리만 무한하다면 아주 큰 숫자를 계산할 수 있겠죠.
알고리즘과 관련된 내용이라 길게 설명하지는 않겠습니다.