eff3ct's st0rage Dev Blog

[백준 BOJ] 19532. 수학은 비대면강의입니다 (UCPC 2020 qualifier A)

난이도

Bronze II

문제 풀이

해가 1개로 유일하게 존재하는 일차 연립 방정식의 해를 구해 출력하는 문제이다.

\[ax + by = c\] \[dx + ey = f\]

두 개의 식은 각각 하나의 직선으로 생각할 수 있다. \(\frac{a}{d} = \frac{b}{e}\)인 경우 두 직선이 만나지 않거나 무한히 많이 해를 가질 수 있는데, 문제에서는 해가 1개로 유일하다고 했으니, 역행렬을 사용해서 해를 구해도 문제가 없다. 따라서, 역행렬을 이용해 해를 구하도록 할 것이다.

\[\begin{bmatrix}a & b \\d & e \end{bmatrix} \left(\begin{array}{c}x\\ y\end{array}\right) = \left(\begin{array}{c}c\\ f\end{array}\right)\] \[\left(\begin{array}{c}x\\ y\end{array}\right) = \begin{bmatrix}a & b \\d & e \end{bmatrix}^{-1}\left(\begin{array}{c}c\\ f\end{array}\right)\] \[\left(\begin{array}{c}x\\ y\end{array}\right) = \frac{1}{ae-bd}\begin{bmatrix}e & -b \\-d & a \end{bmatrix}\left(\begin{array}{c}c\\ f\end{array}\right)\]

이것을 그대로 코드로 짜면, 아래와 같이 짤 수 있다.



 int a, b, c, d, e, f; //input

 cin >> a >> b >> c >> d >> e >> f;

 int dn = a * e - b * d;

 cout << (int)((e * c - b * f) / dn) << " " << (int)((a * f - c * d) / dn);


코드 전문

19532 // 수학은 비대면 강의입니다(UCPC 2020 Qualifier A)

블로그 개설 성공

테스트용 글입니다.

테스트1, 테스트2,

와!