생명 경로 숫자란?
생명 경로 숫자(Life Path Number)는 점성술·수리학에서 개인의 삶의 방향을 나타내는 숫자로, 생년월일에 포함된 모든 숫자를 각각 더해 한 자릿수가 될 때까지 반복해서 줄여서 계산합니다.
문제 정의
우리는 'yyyy-mm-dd' 형식의 날짜 문자열을 입력받아 해당 생년월일의 생명 경로 숫자를 반환하는 JavaScript 함수를 작성해야 합니다.
예를 들어, 날짜가 1999-06-10이라면 다음과 같이 계산할 수 있습니다.
연도 : 1 + 9 + 9 + 9 = 28 → 2 + 8 = 10 → 1 + 0 = 1 월 : 0 + 6 = 6 일 : 1 + 0 = 1 결과 : 1 + 6 + 1 = 8
즉, 연도·월·일을 각각 한 자릿수로 줄인 뒤, 그 결과들을 다시 합산하여 최종적으로 한 자릿수를 얻습니다.
구현 예제
다음은 이를 구현한 코드입니다.
const date = '1999-06-10';
const findLifePath = (date = '') => {
const sum = (arr = []) => {
if(arr.length === 1){
return +arr[0]
};
let total = arr.reduce((acc, val) => acc + val);
if (total < 10){
return total
};
return sum(String(total).split("").map(Number));
};
let [year, month, day] = date.split("-")
year = sum(String(year).split("").map(Number));
month = sum(String(month).split("").map(Number));
day = sum(String(day).split("").map(Number));
return sum([year,month,day]);
};
console.log(findLifePath(date));코드 설명
이 코드의 핵심은 재귀 함수 sum입니다. 배열의 길이가 1이면 그 값을 그대로 반환하고, 합계가 10 미만이면 바로 반환하며, 그렇지 않으면 합계를 다시 문자열로 변환해 각 자릿수로 분리한 후 재귀적으로 합산을 반복합니다. 이렇게 하면 어떤 큰 수든 한 자릿수로 줄어들 때까지 처리할 수 있습니다.
출력 결과
콘솔 출력 결과는 다음과 같습니다.
8