19543 수학은 비대면 강의입니다
문제 🌐
수현이는 4차 산업혁명 시대에 살고 있는 중학생이다. 코로나 19로 인해, 수현이는 버추얼 학교로 버추얼 출석해 버추얼 강의를 듣고 있다. 수현이의 버추얼 선생님은 문자가 2개인 연립방정식을 해결하는 방법에 대해 강의하고, 다음과 같은 문제를 숙제로 냈다.
다음 연립방정식에서 x와 y의 값을 구하시오. ax + by = c dx + ey = f
4차 산업혁명 시대에 숙제나 하고 앉아있는 것보다 버추얼 친구들을 만나러 가는 게 더 가치있는 일이라고 생각했던 수현이는 이런 연립방정식을 풀 시간이 없었다. 다행히도, 버추얼 강의의 숙제 제출은 인터넷 창의 빈 칸에 수들을 입력하는 식이다. 각 칸에는 −999 이상 999 이하의 정수만 입력할 수 있다. 수현이가 버추얼 친구들을 만나러 버추얼 세계로 떠날 수 있게 도와주자.
입력
정수 a, b, c, d, e, f가 공백으로 구분되어 차례대로 주어진다. (-999≤a, b, c, d, e, f≤999)
문제에서 언급한 방정식을 만족하는 (x, y)가 유일하게 존재하고, 이때 x와 y가 각각 -999이상 9999 이하의 정수인 경우만 입력으로 주어짐이 보장된다.
출력
문제의 답인 x와 y를 공백으로 구분해 출력한다.
접근 방법
스터디 때 숙제로 풀었던 문제다. 스터디원들과 어떻게 풀었는지 이야기해 보니,
- -999~999 임을 활용해서 for문을 통해 두 식을 모두 만족하는 x, y를 구한다.
- 식을 일반화해서 x와 y를 a, b, c, d, e, f에 관한 식으로 나타낸다.
나는 시험 중독자라 2번 방법을 선택함!! (관련은 없는 듯)
ax + by = c
dx + ey = f
신나게 방정식을 정리하면 이렇게 나온다.
x = (ce-bf) / (ae-bd)
y = (cd-af) / (bd-ae)
파이썬의 몫 연산자를 활용해서 나타냈다. 끝…….
Full Solution
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)
'알고리즘 문제 > 백준' 카테고리의 다른 글
7785 회사에 있는 사람 (python) (0) | 2023.07.25 |
---|---|
1934 13241 최소공배수 (python) (0) | 2023.07.18 |
10988 팰린드롬인지 확인하기 (python) (0) | 2023.07.14 |
11866 요세푸스 문제 (python) (0) | 2023.07.13 |
17204 죽음의 게임 (python) (0) | 2023.04.23 |