숫자의 각 자릿수 합산하기
프로그래밍에서 숫자의 각 자릿수를 모두 더하는 연산은 자주 활용되는 기본 기법입니다. 예를 들어 숫자 65의 자릿수를 합산하면 6 + 5 = 11이 됩니다. PHP에서는 문자열 인덱싱과 반복문을 조합하면 몇 줄의 코드로 이를 손쉽게 구현할 수 있습니다.
구현 예제
숫자의 자릿수를 합산하는 PHP 코드는 다음과 같습니다.
<?php
function sum_of_digits($my_num){
$sum = 0;
for ($i = 0; $i < strlen($my_num); $i++){
$sum += $my_num[$i];
}
return $sum;
}
$my_num = "65";
print_r("The sum of digits is ");
echo sum_of_digits($my_num);
?>
실행 결과
The sum of digits is 11
코드 동작 원리
위 코드의 동작 과정을 단계별로 살펴보겠습니다.
1. 함수 정의: 'sum_of_digits'라는 이름의 함수가 정의되며, 하나의 정수(문자열 형태)를 매개변수로 받습니다.
function sum_of_digits($my_num){
$sum = 0;
for ($i = 0; $i < strlen($my_num); $i++){
$sum += $my_num[$i];
}
return $sum;
}2. 합계 초기화 및 반복 처리: 함수 내부에서는 먼저 변수 $sum을 0으로 초기화합니다. 이후 strlen() 함수로 입력값의 길이를 확인하고, for 반복문을 돌면서 i번째 위치의 문자를 $sum에 차례대로 더해갑니다. PHP는 문자열의 개별 문자를 산술 연산 시 자동으로 숫자로 변환해 주기 때문에 별도의 형 변환 없이 합산이 가능합니다.
3. 결과 반환 및 호출: 반복이 끝나면 함수는 최종 합계를 반환합니다. 함수 외부에서는 변수에 값을 대입한 뒤, 해당 값을 매개변수로 전달하며 함수를 호출합니다.
$my_num = "65";
더 간결한 대안: array_sum() 활용
PHP의 내장 함수를 활용하면 동일한 로직을 한 줄로 표현할 수도 있습니다.
<?php
$my_num = "65";
$sum = array_sum(str_split($my_num));
echo "The sum of digits is " . $sum;
?>
str_split() 함수가 문자열을 개별 문자 배열로 분리하고, array_sum()이 배열 요소들의 합계를 계산합니다. 코드가 짧아 가독성이 뛰어나다는 장점이 있으며, 숫자 길이와 관계없이 안정적으로 동작합니다.