최종 제출 코드
a, b, c, d, e, f = map(int, input().split())
for i in range(-999, 1000):
for j in range(-999,1000):
if (a*i)+(b*j)==c and (d*i)+(e*j)==f:
print(i, j)
◼ 처음에는 전형적인 연립방정식을 푸는 방식을 대입하려고 했으나, 끊임없는 ZeroDivisionError에 고통 받다가 다른 방법을 물색...
◼ 다른 코드를 참고하여 코드 작성(출처)
for문을 활용하여 x, y에 범위 내의 값을 직접 대입해보는 방법 활용ZeroDivisionError와 만나지 않음...◼ 그러나 여기서 포기할 수 없다
for문을 활용한 문제풀이는 (x, y)의 범위가 늘어나고 미지수와 식의 개수가 추가됨에 따라 실행시간이 걷잡을 수 없이 늘어남.⇒ for문을 사용하지 않은 문제풀이... LET'S GET IT
처음 작성한 코드
def divide (a, b):
if b==0:
return 0
else:
return a/b
a, b, c, d, e, f = map(int, input().split())
if a!=0 and d!=0:
a_ = a*d
b_ = b*d
c_ = c*d
d = d*a
e = e*a
f = f*a
y = int(divide((c_-f), (b_-e)))
x = int(divide((c_-b_*y), a_))
elif a==0:
y = int(divide(c, b))
x = int(divide((f-e*y), d))
elif d==0:
y = int(divide(f, e))
x = int(divide((c-b*y), a))
print(x, y)
◼ ZeroDivisionError를 해결하기 위해 나누기 과정을 함수로 정의
0이 들어올 경우 가차없이 0을 return!0으로는 다른 숫자를 나눌 수 없는데 무슨 소리야!if문으로 a와 d가 0일 때를 처리해주면 정말로 필요없는 부분... 삭제하였다◼ x를 먼저 소거하는 형태로 문제 풀기
a와 d 둘 다 0이 아닌 경우. 즉, 두 개의 식 모두에 x가 존재하는 경우a만 0인 경우.y 값을 구하고 구해진 y 값을 이용하여 두 번째 식에서 x 값을 구한다.d만 0인 경우.y 값을 구하고 구해진 y 값을 이용하여 첫 번째 식에서 x 값을 구한다.최종 수정 코드
a, b, c, d, e, f = map(int, input().split())
if a!=0 and d!=0:
a_ = a*d
b_ = b*d
c_ = c*d
d = d*a
e = e*a
f = f*a
y = int((c_-f) / (b_-e))
x = int((c_-b_*y) / a_)
elif a==0:
y = int(c / b)
x = int((f-e*y) / d)
elif d==0:
y = int(f / e)
x = int((c-b*y) / a)
print(x, y)
실행 결과

◼ 위쪽이 연립방정식을 활용한 문제풀이, 아래쪽이 for문을 활용한 문제풀이
마무리
◼ 다른 사람의 코드를 찾아보니 가감법을 활용하면 쉽게 문제풀이가 가능하다고 한다.(출처)
◼ 만약에 미지수의 개수가 3개가 된다면...? 흠...