Algorithm/Baekjoon

[백준] 3009번 : 네 번째 점 - Java

unknownomad 2022. 3. 31. 23:09

.https://www.acmicpc.net/problem/3009

 

3009번: 네 번째 점

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

www.acmicpc.net



알고리즘

  • 직사각형 만들기 위해 총 4개의 좌표(x, y) 필요
  • 4개의 좌표 기준, 각 좌표의 x와 y값은 쌍을 이룸
  • 쌍을 이루지 않는 (x, y) 좌표 구하기
  • 예시
4개의 좌표 주어짐
(2, 1), (4, 1), (2, 3), (4, 3)

* x 좌표 종류 : 2, 4 (각 2개씩)
* y 좌표 종류 : 1, 3 (각 2개씩)

3개의 좌표가 주어질 때 나머지 하나의 좌표 구하는 방법
x = x가 쌍을 이루지 않는 좌표
y = y가 쌍을 이루지 않는 좌표

쌍을 이루지 않는 (x, y) 좌표 찾기

풀이

1. Scanner

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
 
        Scanner in = new Scanner(System.in);
 
        int[] coord_1 = { in.nextInt(), in.nextInt() };	//좌표1
        int[] coord_2 = { in.nextInt(), in.nextInt() };	//좌표2
        int[] coord_3 = { in.nextInt(), in.nextInt() };	//좌표3
 
        in.close();
		
        int x; int y;
        
        //x 좌표 비교
        //좌표1, 좌표2 비교
        if(coord_1[0] == coord_2[0]) {	
            x = coord_3[0];
        }
        //좌표1, 좌표3 비교
        else if(coord_1[0] == coord_3[0]) {
            x = coord_2[0];
        }
        //좌표2, 좌표3 비교
        else {
            x = coord_1[0];
        }
 
        // y 좌표 비교
        //좌표1, 좌표2 비교
        if(coord_1[1] == coord_2[1]) {
            y = coord_3[1];
        }
        //좌표1, 좌표3 비교
        else if(coord_1[1] == coord_3[1]) {
            y = coord_2[1];
        }
        //좌표2, 좌표3 비교
        else {
            y = coord_1[1];
        }
        System.out.println(x + " " + y);
    }
}

 

2. BufferedReader + StringTokenizer - int[] Array

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
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[] coord_1 = { Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) };
        
        st = new StringTokenizer(br.readLine()," ");
        int[] coord_2 = { Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) };
        
        st = new StringTokenizer(br.readLine()," ");
        int[] coord_3 = { Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()) };
		
        int x; int y;

        //x 좌표 비교
        //좌표1, 좌표2 비교
        if(coord_1[0] == coord_2[0]) {	
            x = coord_3[0];
        }
        //좌표1, 좌표3 비교
        else if(coord_1[0] == coord_3[0]) {
            x = coord_2[0];
        }
        //좌표2, 좌표3 비교
        else {
            x = coord_1[0];
        }
 
        // y 좌표 비교
        //좌표1, 좌표2 비교
        if(coord_1[1] == coord_2[1]) {
            y = coord_3[1];
        }
        //좌표1, 좌표3 비교
        else if(coord_1[1] == coord_3[1]) {
            y = coord_2[1];
        }
        //좌표2, 좌표3 비교
        else {
            y = coord_1[1];
        }
        System.out.println(x + " " + y);
    }
}

 

3. BufferedReader + split() - String[] Array

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws IOException {
    
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String[] coord_1 = br.readLine().split(" ");
        String[] coord_2 = br.readLine().split(" ");
        String[] coord_3 = br.readLine().split(" ");
        
        String x; String y;
        
        //x 좌표 비교
        //좌표1, 좌표2 비교
        if(coord_1[0].equals(coord_2[0])) {	
            x = coord_3[0];
        }
        //좌표1, 좌표3 비교
        else if(coord_1[0].equals(coord_3[0])) {
            x = coord_2[0];
        }
        //좌표2, 좌표3 비교
        else {
            x = coord_1[0];
        }
 
        // y 좌표 비교
        //좌표1, 좌표2 비교
        if(coord_1[1].equals(coord_2[1])) {
            y = coord_3[1];
        }
        //좌표1, 좌표3 비교
        else if(coord_1[1].equals(coord_3[1])) {
            y = coord_2[1];
        }
        //좌표2, 좌표3 비교
        else {
            y = coord_1[1];
        }
        System.out.println(x + " " + y);
    }
}

성능

  • BufferedReader > Scanner

 


출처 : https://st-lab.tistory.com/87