이 튜토리얼에서는 C++를 사용해 배열에 포함된 모든 숫자의 곱에서 첫 번째 자릿수를 구하는 방법을 알아보겠습니다.
문제 해결 접근 방식
문제를 해결하는 단계는 다음과 같습니다.
- 배열을 초기화합니다.
- 배열 내 모든 요소의 곱을 계산합니다.
- 곱한 결과가 10보다 작아질 때까지 10으로 계속 나눕니다.
- 마지막에 남은 한 자릿수를 출력합니다.
예제 코드
전체 코드를 살펴보겠습니다.
#include <bits/stdc++.h>
using namespace std;
// 배열 요소들의 곱을 계산하는 함수
int productOfArrayDigits(int arr[], int n) {
int product = 1;
for (int i = 0; i < n; i++) {
product *= arr[i];
}
return product;
}
// 숫자의 첫 번째 자릿수를 구하는 함수
int firstDigitOfNumber(int n) {
while (n >= 10) {
n /= 10;
}
return n;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6 };
cout << firstDigitOfNumber(productOfArrayDigits(arr, 6)) << endl;
return 0;
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
7
코드 동작 원리
이 코드가 어떻게 동작하는지 단계별로 살펴보겠습니다.
- productOfArrayDigits 함수는 배열의 모든 요소를 곱합니다. 예제에서는 1 × 2 × 3 × 4 × 5 × 6 = 720이 됩니다.
- firstDigitOfNumber 함수는 값이 두 자릿수 이상인 동안 10으로 나눕니다. 즉, 720 → 72 → 7 순서로 줄어들어 최종적으로 첫 자릿수인 7이 반환됩니다.
참고 사항
배열의 크기가 크거나 요소들이 클 경우 곱셈 결과가 int 범위(약 ±21억)를 초과해 오버플로우가 발생할 수 있습니다. 이런 경우에는 long long 타입을 사용하거나, 로그를 활용해 첫 자릿수를 직접 계산하는 방법을 고려하는 것이 안전합니다.
마무리
이 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.