less than 1 minute read

문제 링크

문제 풀이 방식

처음에 틀린 이유

브루트 포스 아닌줄 알고 그냥 수식으로 해보려다 틀렸다… (수식이 틀렸던 것 같다)

맞는 풀이

  1. 수식으로 풀기 (역행렬 곱하기)
  2. 일일히 대입하기 (여기서는 시간 제한이 널널해서 이 방식으로 풀었다.)

문제 풀이 (Java)

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.StringTokenizer;  
  
public class boj19532 {  
    static int A, B, C, D, E, F;  
  
    static int x, y;  
      
    public static void main(String[] args)throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        StringTokenizer st;  
  
        st = new StringTokenizer(br.readLine(), " ");  
        A = Integer.parseInt(st.nextToken());  
        B = Integer.parseInt(st.nextToken());  
        C = Integer.parseInt(st.nextToken());  
        D = Integer.parseInt(st.nextToken());  
        E = Integer.parseInt(st.nextToken());  
        F = Integer.parseInt(st.nextToken());  
  
        defineAns();  
          
        System.out.printf("%d %d", x, y);  
    }  
  
    private static void defineAns() {   
        // 예외처리 안해줘도 OK . 무조건 해가 있는 경우이므로 브루트 포스  
        
        for(int i = -999; i <= 999;i++){  
            for(int j = -999;j <= 999;j++){  
                if((A*i + B*j == C) && (D*i + E*j == F)){  
                    x = i;  
                    y = j;  
                    break;  
                }  
  
            }  
        }  
  
    }  
}

Leave a comment