문제 소개
숫자로만 이루어진 문자열을 입력받는 JavaScript 함수를 작성해야 합니다. 함수는 문자열의 각 자릿수를 개별 숫자로 분리한 뒤, 짝수 숫자들의 합과 홀수 숫자들의 합을 각각 계산합니다. 그리고 짝수 합이 홀수 합보다 크면 true, 그렇지 않으면 false를 반환하면 됩니다.
예제 코드
다음은 이 문제를 해결하는 전체 코드입니다.
const num = '645457345';
const isEvenGreater = (str = '') => {
let evenSum = 0;
let oddSum = 0;
for(let i = 0; i < str.length; i++){
const el = +str[i];
if(el % 2 === 0){
evenSum += el;
}else{
oddSum += el;
};
};
return evenSum > oddSum;
};
console.log(isEvenGreater(num));
출력 결과
false
코드 동작 원리
위 코드의 로직을 단계별로 살펴보면 다음과 같습니다.
- 짝수 합을 저장할
evenSum과 홀수 합을 저장할oddSum변수를 0으로 초기화합니다. for반복문으로 문자열의 각 문자를 하나씩 순회합니다.- 단항
+연산자를 사용해 문자를 숫자로 변환한 후, 2로 나눈 나머지가 0인지 검사하여 짝수와 홀수를 판별합니다. - 판별 결과에 따라 해당하는 합계 변수에 값을 누적합니다.
- 마지막으로
evenSum > oddSum비교 결과를 boolean 값으로 반환합니다.
예제 문자열 '645457345'의 경우, 짝수 자릿수는 6, 4, 4로 합계가 14이고, 홀수 자릿수는 5, 5, 7, 3, 5로 합계가 25입니다. 짝수 합(14)이 홀수 합(25)보다 작기 때문에 최종 결과는 false가 출력됩니다.