Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 19532번- '수학은 비대면강의입니다' (PYTHON 풀이) 본문
문제:

문제는 다음과 같다. 우리가 수학시간에 배웠던 연립방정식을 코드로 구현하면 된다.
풀이:
1x + 3y = -1
4x + 1y = 7
4x 12y = -4
4x + 1y = 7
11y = -11
y = -1
x = 2
연립방정식을 손으로 풀 때 어떤 과정을 거쳐서 푸는지 생각해보면 위와 같다. (소거법)
두 식이 있을 때 x 또는 y를 비교해서 수를 맞춰주고 바뀐 식에 한해 전체 자리에 해당 값을 곱해준다.
세세한 과정을 보기 위해 이 과정을 단순히 순서대로 코드로 작성해보았다.
a,b,c,d,e,f = map(int,input().split())
re1 = False
re2 = False
if a % d == 0:
re1 = True
elif d % a == 0:
re2 = True
if re1 == True:
d = d*a
e = e*a
f = f*a
elif re2 == True:
a = a*d
b = b*d
c = c*d
elif re1 == False or re2 == False:
a=a*d
b=b*d
c=c*d
d=a*d
e=a*e
f=a*f
temp1 = b-e
temp2 = c-f
final2 = temp2 // temp1
final1_1 = c-b*final2
final1 = final1_1 // a
print(final1, final2)
정말 무식한 방법으로 앞서 설명한, 손으로 연립방정식을 풀 때(소거법) 그 과정을 따라서 가면 이렇게 긴 코드가 나온다.(무식하지만 더 간단하게도 풀 수 있다. 굳이 False, True를 사용할 필요 없음)
비쥬얼스튜디오코드에서는 모든 예제에 대해 정답이 출력되었는데 백준에서는 틀렸다고 뜬다. 반례가 있는 모양이다. 예상 가는 부분은 있는데 어차피 실무에서 이렇게 무식하게 하지 않을테니까 간단히 문제를 풀어보겠다.
일단 위 코드는 손으로 연립방정식을 풀 때와 같이 차례로 넣은 코드이니까 연립방정식에 대해서 어떤 로직인지 잊으신 분은 위를 참고하시길 바란다. (백준 예제 한정으로만)
최종 코드:
a,b,c,d,e,f = map(int,input().split())
print((c*e-b*f)//(a*e-b*d), (a*f-d*c)//(a*e-b*d))
크래머 공식이라고 한번쯤 들어봤을 거다. 아니 이름은 못 들었을지언정 공식이라도!
크래머 공식은 행렬식을 이용해 변수와 방정식의 개수가 같은 연립일차방정식의 해를 구하는 방법이다.
공식은 다음과 같다.

해당 공식을 사용하면 아주 간단히 상기 코드처럼 작성할 수 있고 정말 빠르게 풀 수 있다.
'CODING 💻' 카테고리의 다른 글
| 백준 11650번- '좌표 정렬하기' (PYTHON 풀이) (0) | 2025.10.08 |
|---|---|
| 백준 10814번- '나이순 정렬' (PYTHON 풀이) (0) | 2025.10.07 |
| 백준 2231번- '분해합' (PYTHON 풀이) (0) | 2025.10.05 |
| 백준 24313번- '알고리즘 수업 - 점근적 표기 1' (PYTHON 풀이) (0) | 2025.10.04 |
| 백준 10872번- '팩토리얼' (PYTHON 풀이) (0) | 2025.10.03 |
