Adventure Time - Jake [백준/python] 19532 수학은비대면강의입니다: 가감법, for-loop, 왜 틀린거지
본문 바로가기
Back-end/백준(python)

[백준/python] 19532 수학은비대면강의입니다: 가감법, for-loop, 왜 틀린거지

by bogyoi 2023. 10. 26.
a,b,c,d,e,f=map(int,input().split())

y=int((d/a*c-f)/(d/a*b-e))
x=int((c-b*y)/a)
print(x,y)
 
 

첫번째 식의 양변에 d/a를 곱하면

d*x+d/a*b*y=d/a*c

d*x+e*y=f

----------------------빼기

d/a*b*y-e*y=d/a*c-f,

(d/a*b-e)*y=d/a*c-f,

-> y=(d/a*c-f)/(d/a*b-e)

이런식으로 진짜 연립방정식 풀듯이 풀었음

실행해보니 맞게 나오길래 제출했는데 백준에서는 틀렸다그러네

왜지? 열받네

(x, y)값이 여러개 나올 수 있으니 그런건가 생각도 해봤는데 음

왜일까

왜일까요

.

.

..

좀 더 생각해봐야겠음.

 

 

근데 난 이렇게 말고 진짜 미지수를 직접 찾을 수 있는 그런 방법이 있지 않을까 생각함

다른 분들 코드 찾아보니 있더라

이중 for-loop을 써서 x, y의 모든 범위를 돌아가며 찾는 방법이었음

a,b,c,d,e,f=map(int,input().split())

for x in range(-999, 1000):
  for y in range(-999,1000):
    if (a*x)+(b*y)==c and (d*x)+(e*y)==f:
      print(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)
 

이 방법이 for-loop을 저리 많이 도는 것보다 훨씬 좋아보인단 말이지

실제로 돌려보니 복잡도도 줄어듦

 

근데 내 방법도 되는 거 아냐 ..?! 계속 의문이 드는..

혹시몰라서

a,b,c,d,e,f=map(int,input().split())

y=(d//a*c-f)//(d//a*b-e)
x=(c-b*y)//a
print(x,y)
 

이렇게도 해봤는데 틀렸대

뭐냐고~