수학은 비대면강의입니다

문제

언어

  • JavaScript

순서도

  1. x 의 계수를 동일하게 만든 후 두 방정식을 서로 빼서, y = … 식 만들기
  2. y 의 계수를 동일하게 만든 후 두 방정식을 서로 빼서, x = … 식 만들기
  3. x 와 y 값 출력

문제 풀이 step 1

  • 2 개의 연립방정식이 주어집니다. 이를 풀면 됩니다.
  • 두 방정식의 x 의 계수를 동일하게 만든 후 빼줍니다. 그러면 y 의 값을 구할 수 있습니다.
    • a * d * x + b * d * y = c * d
    • a * d * x + a * e * y = e * f (만든 후 빼기)
    • b * d * y - a * e * y = c * d - e * f (y = … 식 만들기)
    • (b * d - a * e) * y = c * d - e * f
    • y = (c * d - e * f) / (b * d - a * e)
  • 두 방정식의 y 의 계수를 동일하게 만든 후 빼줍니다. 그러면 x 의 값을 구할 수 있습니다.
    • 위의 y 를 구할 때 사용한 방식과 동일
  • 구한 x 와 y 를 출력하면 정답입니다.
  • 추가 설명은 주석으로 작성하겠습니다.

후기

  • 연립방정식을 직접 푸는 방법도 있지만, - 999 ~ 999 의 범위를 이중 반복문으로 완전 탐색하는 방법도 있습니다.
  • 속도 측면에서는 2000 * 2000 의 반복을 하는 방법보다는 연립 방정식을 바로 푸는 방법이 더 빠를 것입니다.

소스 코드

const input = require("fs")
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n");

const solution = (input) => {
	const [a, b, c, d, e, f] = input[0].split(" ").map(Number);

	const x = (c * e - b * f) / (a * e - b * d);
	const y = (c * d - f * a) / (b * d - e * a);

	return [x, y].join(" ");
};

console.log(solution(input));