본문 바로가기

Coding Test/Step12. 브루스 포트

[Java] 3단계. 수학은 비대면 강의입니다. [19532번]

  • 예제 입력1
1 3 -1 4 1 7
  • 예제 출력1
2 -1
  • 예제 입력2
2 5 8 3 -4 -11

 

  • 예제 출력2
-1 2

 


  • 문제 접근
    • a, b, c, d, e, f는 -999 ~ 999 사이의 값
    • x = -999, y = -999부터 시작하여 각각 대입
  • 문제 해결
    • 이중 반복문으로 해결
      • x = -999 ~ 999
      • y = -999 ~ 999
      • a * x + b * y = c이고 d * x + e * y = f일 때 반복문 종료
  • 슈도 코드
a, b, c, d, e, f 값 저장
for(x = -999 ~ 999까지 반복){
	if(x != 0 && y != 0) break;
	for(y = -999 ~ 999까지 반복){
		if(ax + by = c이고 dx + ey = f){
			answerX(x 저장)
			answerY(y 저장)
		}
	}
}
  • 코딩하기
public static void main(String[] args) throws Exception{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int a = Integer.parseInt(st.nextToken()), b = Integer.parseInt(st.nextToken()), c = Integer.parseInt(st.nextToken());
    int d = Integer.parseInt(st.nextToken()), e = Integer.parseInt(st.nextToken()), f = Integer.parseInt(st.nextToken());
    int answerX = 0, answerY = 0;
    for(int x = -999; x <= 999; x++){
        if(answerX != 0 && answerY != 0) break;
        for(int y = -999; y <= 999; y++){
            if(a * x + b * y == c && d * x + e * y == f){
                answerX = x; answerY = y;
                break;
            }
        }
    }
    System.out.println(answerX + " " + answerY);
}

연립 방정식을 구하는 공식으로 문제 풀이

public static void main(String[] args) throws Exception{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int a = Integer.parseInt(st.nextToken()), b = Integer.parseInt(st.nextToken()), c = Integer.parseInt(st.nextToken());
    int d = Integer.parseInt(st.nextToken()), e = Integer.parseInt(st.nextToken()), f = Integer.parseInt(st.nextToken());
    int answerX = (e * c - b * f) / (a * e - b * d);
    int answerY =(a * f - d * c) / (a * e - b * d);

    System.out.println(answerX + " " + answerY);
}