‡ CODING TEST STUDY ‡/º 백준
[백준 | Java Bronze III ] (#19532) 수학은 비대면강의입니다
Trudy | 송연
2024. 7. 8. 01:52
문제
https://www.acmicpc.net/problem/19532
첫번째 코드 - 실패 (Runtime error: division by zero)
일반적으로 2차 방정식을 푸는 방식으로 접근해서 풀었다. 예시 테스트 코드들은 잘 돌아가지만 채점을 하면 division by 0 라는 런타임 에러가 뜬다. 계수가 0인 경우에 잘못 된 것 같다.
package week10.baek.july9;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class B19532 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] nums = new int[6];
for (int i = 0; i < 6; i++) {
nums[i] = Integer.parseInt(st.nextToken());
}
//x의 계수를 맞춰주기
int a = nums[4] * nums[0] - nums[1] * nums[3];
int b = nums[5] * nums[0]- nums[2] * nums[3];
int y = b / a;
int x = (nums[2] - nums[1] * y)/nums[0];
System.out.println(x + " " + y);
}
}
찾아보니 이 문제는 완전 탐색으로 풀 수 있었던 문제이다.
너무 어렵게 생각했다.. 이렇게 단순히 풀렸던 문제라니
최종 코드
package week10.baek.july9;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class B19532 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] nums = new int[6];
for (int i = 0; i < 6; i++) {
nums[i] = Integer.parseInt(st.nextToken());
}
for (int i = -999; i <=999; i++) {
for (int j = -999; j <= 999; j++) {
int a = i * nums[0] + j * nums[1];
int b = i * nums[3] + j * nums[4];
if(a == nums[2] && b == nums[5]) {
System.out.println(i + " " + j);
return;
}
}
}
}
}