📌문제
수현이는 4차 산업혁명 시대에 살고 있는 중학생이다. 코로나 19로 인해, 수현이는 버추얼 학교로 버추얼 출석해 버추얼 강의를 듣고 있다. 수현이의 버추얼 선생님은 문자가 2개인 연립방정식을 해결하는 방법에 대해 강의하고, 다음과 같은 문제를 숙제로 냈다.

4차 산업혁명 시대에 숙제나 하고 앉아있는 것보다 버추얼 친구들을 만나러 가는 게 더 가치있는 일이라고 생각했던 수현이는 이런 연립방정식을 풀 시간이 없었다. 다행히도, 버추얼 강의의 숙제 제출은 인터넷 창의 빈 칸에 수들을 입력하는 식이다. 각 칸에는 −999 이상 999 이하의 정수만 입력할 수 있다. 수현이가 버추얼 친구들을 만나러 버추얼 세계로 떠날 수 있게 도와주자.
입력
정수 a, b, c, d, e, f 가 공백으로 구분되어 차례대로 주어진다. (−999 ≤ a,b,c,d,e,f ≤ 999)
문제에서 언급한 방정식을 만족하는 (x,y)가 유일하게 존재하고, 이 때 x와 y가 각각 −999 이상 999 이하의 정수인 경우만 입력으로 주어짐이 보장된다.
출력
문제의 답인 x와 y를 공백으로 구분해 출력한다.
예제 입력 1 복사
1 3 -1 4 1 7
예제 출력 1 복사
2 -1
📌해설&답
해설)
많은 풀이 방법이 있지만 제일 단순한 방법으로 구해보자.
두 방정식의 x의 계수의 값을 맞춰주고, x를 소거한 뒤 y를 구하고, 구한 y를 주어진 방정식에 대입하여 x 를 구한다.
1. y값을 먼저 구한뒤, x를 구한다. -> 두 식에서 x를 일단 소거
2. x를 구한다. (주어진 방정식 ax+by=c, dx+ey=f 에 y 대입)
(두번째 방정식에 대입하는 건 생략)
답)
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(st.nextToken());
int e = Integer.parseInt(st.nextToken());
int f = Integer.parseInt(st.nextToken());
int x=0;
//유일한 해가 존재한다고 하였으므로 de가 0이 되는 경우는 따지지 않는다.
int de = (b * d - e * a); //y의 분모
int y = (c * d - f * a) / de; //y 구하기
if (a != 0) { //첫번째 방정식(ax+by=c)에 y대입하여 x 구하기(a는 0이 아닐 때)
x = (b * f - c * e) / (b * d - e * a);
} else if (d != 0) { //두번째 방정식(dx+ey=f)에 y대입하여 x구하기(d는 0이 아닐 때)
x = (b * f - c * e) / (b * d);
}
System.out.println(x + " " + y);
}
}
📌코멘트
다른 방법들은 시간날 때 다시 올리는 것으로...
끝까지 읽어주셔서 감사합니다 :)
Have a good day🐱
📢
1. 개발자 준비생이 공부한 내용을 정리한 글입니다. 내용에 오류가 있을 수 있습니다.
2. 위와 같은 이유로 내용에 대한 지적과 조언은 감사하게 받습니다.
3. 이 글의 내용은 계속 공부함으로써 언제든지 추가/수정 될 수 있습니다.
'Coding Test > 백준 - JAVA' 카테고리의 다른 글
백준 2750번 수 정렬하기(JAVA) (2) | 2025.02.18 |
---|---|
백준 2839번 설탕 배달 (JAVA) (1) | 2025.02.06 |
백준 2231번 분해합 (JAVA) (2) | 2025.01.23 |
백준 24266번 알고리즘 수업 - 알고리즘의 수행 시간 5 (JAVA) (0) | 2025.01.10 |
백준 24265번 알고리즘 수업 - 알고리즘의 수행 시간 4 (JAVA) (0) | 2025.01.09 |