[JAVA] 수학은 비대면강의입니다

NoHae·2025년 3월 18일

백준

목록 보기
21/106

문제 출처

단계별로 풀어보기 > 브루트 포스 > 수학은 비대면강의입니다
https://www.acmicpc.net/problem/19532

문제 설명

a,b,c,d,e,f가 주어질 때, 해당 연립방정식에 해당하는 x,y 값을 return 하라.


접근 방법

a,b,c,d,e,f를 입력 받아서 이중 for문을 이용하여 i,j 가 각각 -999 ~ 999일 때를 대입해서 식을 계산한다.

import java.io.*;
import java.util.StringTokenizer;

public class 수학은_비대면강의입니다 {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        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());

        int x=0,y=0;

        for(int i = -999; i<1000; i++){
            for(int j = -999; j<1000; j++){
               if( a*i + b*j == c && d*i + e*j == f){
                   x = i;
                   y = j;
                   break;
               }
            }
        }

        StringBuilder sb = new StringBuilder();
        sb.append(x).append(" ").append(y);
        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }

}
import java.io.*;
import java.util.StringTokenizer;

public class 수학은_비대면강의입니다_review {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        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());

        StringBuilder sb = new StringBuilder();

        for(int i = -999; i<1000; i++){
            for(int j = -999; j<1000; j++){
                if(a*i + b*j == c && d*i + e*j == f){
                    sb.append(i).append(" ").append(j);
                    break;
                }
            }
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }

}

알게된 점

처음 문제를 풀이 할 때는,
&& 연산자를 사용 안하고 풀어보고자

 (a-d)*i + (b-e)*j == (c-f)

를 사용해보고자 했으나 이는 x,y에 대한 새로운 식일 뿐, 연립방정식의 해가 될 수 없다.

문제푼 흔적


Review

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글