https://www.acmicpc.net/problem/19532
19532번: 수학은 비대면강의입니다
정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $-
www.acmicpc.net
문제 풀이
- 완전 탐색문제이므로 for문을 이용해 풀이하려했습니다
- x와 y를 무식하게 전부 찾는 방식으로 풀이했음
- 처음에 코드를 짰을 땐 런타임에러가 떴는데 break를 사용해 이를 해결하였습니다
a, b, c, d, e, f = map(int, input().split())
result = []
for x in range(-999, 1000):
for y in range(-999, 1000):
if a*x + b*y == c and d*x + e*y == f:
result = [x, y]
break
for i in range(2):
print(result[i], end=' ')
다른 사람 풀이
- 다른 분의 풀이를 보니 이런 연립방정식 문제에서는 가감법을 사용한다고 합니다
- 아래처럼 X자 모양으로 수를 곱한뒤 나눠주면 쉽게 x와 y값을 구할 수 있습니다
a, b, c, d, e, f = map(int, input().split())
x = (c*e-b*f)//(a*e-b*d)
y = (c*d-a*f)//(b*d-a*e)
print(x, y)