본문 바로가기
알고리즘 문제/백준

[백준] 19532번: 수학은 비대면강의입니다 (Java)

by Lpromotion 2024. 8. 7.

1. 문제설명

$$ ax + by = c \\ dx + ey = f $$

위 연립방정식에 대한 정수 $a, b, c, d, e, f$가 주어졌을 때, $(-999 ≤ a, b, c, d, e, f ≤ 999)$
문제의 답인 $x$와 $y$를 구하는 문제이다.

  • 시간 제한: 1초
  • 메모리 제한: 1024MB

 

2. 접근 방식

=> 완전탐색을 사용하여 x와 y에 -999부터 999까지 대입하여 해를 구한다.

  • 2중 for문을 이용해 x와 y에 -999부터 999까지의 수를 대입한다.
  • 두 개의 연립방정식에 맞으면 x와 y를 출력하고 프로그램 종료한다.

 

3. 최종 코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        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++) { // x에 -999부터 999까지 대입
            for(int y=-999; y<=999; y++) { // y에 -999부터 999까지 대입
                if(a*x + b*y == c && d*x + e*y == f) { // 두 개의 연립방정식에 만족하면
                    System.out.println(x+" "+y); // x와 y를 출력
                    return; // 프로그램 종료
                }
            }
        }
    }
}

 

4. 시간복잡도

각 루프는 1999번 반복된다. 1999를 N이라고 할 때 $O(N^2)$

반응형

댓글