https://www.acmicpc.net/problem/19532
브루트 포스를 이용하면 간단하다. 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 |