카테고리 없음

[JAVA] 19532 수학은 비대면강의입니다_브루트포스

오늘도개발 2023. 4. 13. 15:38

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

 

접근 : 

 

 - 2차 연립 방정식을 입력받는다.

 

 - 입력 받은 그대로 x , y에 -999 ~ 999 까지 입력하여 정답인 경우를 찾는다.

 

 * 공식 유도를 통하여  for 문 없이 계산할 수 있지만, 브루트포스를 요구한 문제임으로 모든 경우를 입력하여 구한다. 

 

 코드 구현 : 

 

import java.io.*;

public class Main {

	static class Equations {
		private int[] nums;

		public Equations(int[] nums) {
			this.nums = nums;
		}

		public String getXY() {
			StringBuilder sb = new StringBuilder();
			for (int i = -999; i < 1000; i++) {
				for (int j = -999; j < 1000; j++) {
					if ((nums[0] * i + nums[1] * j == nums[2]) && (nums[3] * i + nums[4] * j == nums[5])) {
						return sb.append(i).append(" ").append(j).toString();
					}
				}
			}
			return null;
		}
	}

	public static void main(String[] srgs) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] inputs = br.readLine().split(" ");
		int[] inputs_num = new int[6];
		for (int i = 0; i < inputs_num.length; i++) {
			inputs_num[i] = Integer.parseInt(inputs[i]);
		}

		Equations equations = new Equations(inputs_num);

		System.out.println(equations.getXY());
		br.close();
	}
}