백준/15001 - 20000

[백준] 19532번 : 수학은 비대면강의입니다.(JAVA)

lms0806 2021. 7. 20. 18:58
728x90
반응형

https://www.acmicpc.net/problem/19532

 

19532번: 수학은 비대면강의입니다

정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $-

www.acmicpc.net

풀이

연립방정식을 풀면 되는 문제입니다. 저는 수학을 잘 못하기 때문에 브루트포스 알고리즘으로 풀었습니다.

각 항의 범위가 -999 < x < 999 이므로 그 크기만큼 반복하다가 맞는 부분이 나올 경우 return 시켜주는 함수를 통해 출력해주면 됩니다.

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());
		
		System.out.print(solve(a,b,c,d,e,f));
	}
	
	public static String solve(int a, int b, int c, int d, int e, int f) {
		for(int x = -999; x <= 999; x++) {
			for(int y = -999; y <= 999; y++) {
				if(a * x + b * y == c && d * x + e * y == f) {
					return x + " " + y;
				}
			}
		}
		return "";
	}
}
728x90
반응형