Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 합과 곱 조건을 만족하는 두 수 찾기


두 개의 숫자 mn을 입력받아, 합이 n이 되고 곱이 m이 되는 두 숫자를 반환하는 JavaScript 함수를 작성해 보겠습니다. 만약 조건을 만족하는 숫자 쌍이 존재하지 않는다면 함수는 false를 반환해야 합니다.

문제 접근 방법

가장 직관적인 풀이는 완전 탐색(Brute Force)입니다. 두 수의 합을 sum, 곱을 prod라고 할 때, 한쪽 숫자를 i로 정하면 나머지 하나는 자동으로 sum - i로 결정됩니다. 따라서 i를 0부터 sum / 2까지 순회하면서 i * (sum - i)prod와 일치하는지만 확인하면 됩니다.

구현 예제

코드는 다음과 같습니다.

const goldenNumbers = (sum, prod) => {
    for(let i = 0; i < (sum / 2); i++){
        if(i * (sum-i) !== prod){
            continue;
        };
        return [i, (sum-i)];
    };
    return false;
};
console.log(goldenNumbers(24, 144));
console.log(goldenNumbers(14, 45));
console.log(goldenNumbers(21, 98));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

false
[ 5, 9 ]
[ 7, 14 ]

결과 해석

goldenNumbers(14, 45)는 5 + 9 = 14이고 5 × 9 = 45이므로 [5, 9]를 반환하고, goldenNumbers(21, 98)은 7 + 14 = 21이고 7 × 14 = 98이므로 [7, 14]를 반환합니다. 반면 goldenNumbers(24, 144)는 탐색 범위 안에서 조건을 만족하는 쌍을 찾지 못해 false를 반환합니다.

주의할 점: 두 수가 같은 경우

위 코드는 반복 조건을 i < sum / 2로 설정했기 때문에 두 수가 정확히 같은 경우(예: 12 + 12 = 24, 12 × 12 = 144)는 탐색하지 못한다는 한계가 있습니다. 이러한 케이스까지 처리하려면 반복 조건을 i <= sum / 2로 변경하면 됩니다.