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