1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
function solution(a, b) {
if (a % 2 === 0 && b % 2 === 0) {
return Math.abs(a - b);
} else if (a % 2 === 0 || b % 2 === 0) {
return 2 * (a + b);
} else {
return a * a + b * b;
}
}
직관적으로 풀이했다. a와 b가 둘 다 짝수일 경우, 하나만 짝수일 경우,(둘 다 짝수인지 여부는 앞에서 확인했으므로) 둘 다 홀수일 경우를 찾아 각 조건에 맞는 값을 return해주도록 했다.
function solution(a, b) {
const isOdd = (num) => num % 2 === 1;
return isOdd(a) && isOdd(b)
? a ** 2 + b ** 2
: isOdd(a) || isOdd(b)
? 2 * (a + b)
: Math.abs(a - b);
}
짝수 혹은 홀수를 찾는 식이 반복되기 때문에 이렇게 함수로 제작하는 것도 좋을 것 같다. 항상 반복되는 걸 줄이는 걸 목표로 해야할 것 같다.
또한 **를 사용하여 제곱을 할 수 있다는 것도 다시금 깨달았다. 코드는 반복하면 좋지 않지만, 학습은 계속 반복해야한다.