자바스크립트 코딩테스트 강좌, Ax + By = C

코딩 테스트는 소프트웨어 개발자로서의 역량을 가늠하는 중요한 단계입니다. 특히 알고리즘 문제는 문제 해결 능력과 창의성을 테스트하는 좋은 방법입니다. 이번 강좌에서는 자바스크립트를 활용하여 가장 기초적인 선형 방정식의 해를 찾는 문제를 풀어보겠습니다. 주어진 수식 Ax + By = C의 해를 찾아보는 과정입니다.

문제 정의

문제는 다음과 같습니다:

정수 A, B, C가 주어졌을 때, Ax + By = C를 만족하는 모든 정수 쌍 (x, y)를 구하시오. 단, x와 y는 0 이상이어야 하며, 최대 10000까지만 허용한다.

문제 분석

이 문제는 간단한 선형 방정식의 해를 찾는 문제로, 두 변수 x와 y에 대해 다음 조건을 만족해야 합니다:

  • Ax + By = C
  • 0 ≤ x, y ≤ 10000

이 문제를 해결하기 위해 반복문을 사용하여 가능한 모든 x값을 대입한 후 대응하는 y값을 계산하여 조건을 만족하는지 확인하면 됩니다.

해결 전략

1. x를 0부터 10000까지 반복합니다.

2. 각 x에 대해 y를 계산합니다:

y = (C - Ax) / B

3. y가 0 이상이고 정수인지 확인합니다.

4. 조건을 만족하는 모든 (x, y) 쌍을 저장합니다.

자바스크립트 코드 구현

이제 위의 전략을 바탕으로 자바스크립트를 사용하여 코드를 구현해보겠습니다. 아래는 코드의 예시입니다:

function findSolutions(A, B, C) {
    const solutions = [];
    
    for (let x = 0; x <= 10000; x++) {
        // B가 0인 경우를 처리
        if (B === 0) {
            if (A * x === C) {
                solutions.push([x, 0]);
            }
            continue;
        }
        
        const y = (C - A * x) / B;

        // y가 정수인지 확인하고 0 이상인지 확인
        if (y >= 0 && Number.isInteger(y)) {
            solutions.push([x, y]);
        }
    }
    
    return solutions;
}

// 예시 실행
const A = 1, B = 2, C = 3;
const result = findSolutions(A, B, C);
console.log(result); // [ [ 0, 1 ], [ 1, 1 ], [ 3, 0 ] ]

코드 설명

위의 자바스크립트 함수 findSolutions는 아래와 같은 단계로 동작합니다:

  1. solutions 배열을 만들어 결과를 저장합니다.
  2. 0부터 10000까지 x에 대해 반복합니다.
  3. x에 대해 y를 계산합니다. 이때 B가 0인지도 체크하며, B가 0인 경우는 예외 처리합니다.
  4. y가 0 이상이며 정수인지 확인한 후, 조건을 만족하면 (x, y) 쌍을 solutions 배열에 추가합니다.
  5. 모든 반복이 끝나면 solutions 배열을 리턴합니다.

테스트 케이스

이제 몇 가지 테스트 케이스를 통해 위의 함수가 잘 작동하는지 확인해보겠습니다.

console.log(findSolutions(1, 2, 3)); // [ [ 0, 1 ], [ 1, 1 ], [ 3, 0 ] ]
console.log(findSolutions(2, 3, 6)); // [ [ 0, 2 ], [ 3, 0 ] ]
console.log(findSolutions(0, 1, 5)); // [ [ 0, 5 ] ]
console.log(findSolutions(1, 0, 5)); // [ [ 5, 0 ] ]
console.log(findSolutions(0, 0, 0)); // [ [ 0, 0 ] ]

결론

이 글에서는 주어진 선형 방정식 Ax + By = C의 해를 구하는 알고리즘을 자바스크립트를 통해 구현해보았습니다. 문제를 접근하기 위해 각 단계별로 로직을 세분화하여 작성하였고, 다양한 테스트 케이스를 통해 함수가 올바르게 작동하는지 확인하였습니다. 이러한 문제는 코딩 테스트에서 자주 출제되는 유형으로, 알고리즘 사고방식을 기르는 데 큰 도움이 됩니다. 앞으로도 다양한 알고리즘 문제를 통해 여러분의 코딩 실력을 한 단계 끌어올리길 바랍니다.