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
브루트 포스를 이용하면 간단하다. n = 2000 이고 for 반복문을 두 번 돌면 O(n^2) 이니 시간초과는 걱정하지 않아도 된다. 그냥 x 와 y 를 -999 부터 999 까지 돌리자.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
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());
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)
{
System.out.printf("%d %d", x, y);
return;
}
}
}
}
}
만약 벡터를 이용하여 계산한다면 반복문을 돌리지 않고 상수시간에 풀 수 있지만, x 와 y 가 a, b, c, d, e, f 에 대한 굉장히 복잡한 다항식이 되기 때문에 시간도 남으니 브루트 포스로 하는게 좋을 듯 하다.
- 느낀 점
브루트 포스까지는 쉽다.
'[JAVA] > 자바[JAVA] 백준' 카테고리의 다른 글
BOJ(백준 온라인 저지) 25305번 with 자바[JAVA] (0) | 2024.03.24 |
---|---|
BOJ(백준 온라인 저지) 2587번 with 자바[JAVA] (0) | 2024.03.24 |
BOJ(백준 온라인 저지) 10101번 with 자바[JAVA] (0) | 2024.03.18 |
BOJ(백준 온라인 저지) 9063번 with 자바[JAVA] (0) | 2024.03.18 |
BOJ(백준 온라인 저지) 15804번 with 자바[JAVA] (0) | 2024.03.18 |