루나 합(Lunar Sum)이란?
루나 합(lunar sum)은 두 수를 더할 때 각 자릿수를 일반적인 덧셈으로 계산하는 대신, 같은 자리의 두 숫자 중 더 큰 값을 취해 결과를 만드는 독특한 덧셈 방식입니다.
예를 들어 다음과 같은 두 수가 있다고 가정해 보겠습니다.
a = 879, b = 768
(이 문제에서는 편의상 자릿수가 같은 두 수만 다룹니다.)
각 자릿수별로 더 큰 값을 선택하면 8, 7, 9가 되므로, a와 b의 루나 합은 다음과 같습니다.
879
이제 우리는 두 개의 숫자를 인자로 받아 그 루나 합을 반환하는 JavaScript 함수를 작성해야 합니다.
구현 예시
다음은 해당 코드입니다.
const num1 = 6565;
const num2 = 7385;
const lunarSum = (num1, num2) => {
const numStr1 = String(num1);
const numStr2 = String(num2);
let res = 0, temp;
for(let i = 0; i < numStr1.length; i++){
temp = Math.max(+numStr1[i], +numStr2[i]);
res = (res*10) + temp;
};
return res;
};
console.log(lunarSum(num1, num2));
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다.
7585
코드 동작 원리
위 코드의 동작 과정을 단계별로 살펴보면 다음과 같습니다.
- 먼저
String()을 사용해 두 숫자를 문자열로 변환하여 각 자릿수에 쉽게 접근할 수 있도록 준비합니다. - 반복문을 돌면서 같은 위치의 자릿수 두 개를
Math.max()로 비교하여 더 큰 값을 선택합니다. - 선택된 자릿수는
res * 10 + temp공식을 통해 기존 결과값 뒤에 이어 붙여 최종 숫자를 만듭니다. - 모든 자릿수를 처리한 후 완성된 루나 합을 반환합니다.
예제에서 6565와 7385의 경우 각 자릿수별로 7, 5, 8, 5가 선택되므로 최종 결과인 7585가 출력됩니다.