반응형
문제
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
입력
세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.
출력
직사각형의 네 번째 점의 좌표를 출력한다.
테스트 케이스
입력
5 5
5 7
7 5
출력
7 7
---------------------
입력
30 20
10 10
10 20
출력
30 10
접근
1. 점 두 개씩 3개를 입력 받음
2. 점 하나를 추가하여 직사각형이 되기 위한 점을 출력해줍니다.
이 문제의 핵심은 짝을 맞추는 게 중요합니다.
직사각형이 되기 위해선,
같은 x좌표가 2개씩 2쌍이 있어야 하고
같은 y좌표가 2개씩 2쌍이 있어야 합니다.
예를 들면
(0,0) , (0,1) , (1,0), (1,1)에서도 볼 수 있듯이
x 0 좌표가 2개이며
x 1 좌표가 2개
y 0 좌표 2개
y 1 좌표 2개
이처럼 2개씩 존재합니다.
이를 이용해 코드를 짜니 문제가 해결되었습니다.
코드
import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
/*
3009 problem
*/
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int arr[][] = new int[3][3];
int x,y;
for(int i=0; i<3; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
//x
if(arr[0][0] == arr[1][0]) {
x = arr[2][0];
}
else if(arr[0][0] == arr[2][0]) {
x = arr[1][0];
}
else {
x = arr[0][0];
}
//y
if(arr[0][1] == arr[1][1]) {
y = arr[2][1];
}
else if(arr[0][1] == arr[2][1]) {
y = arr[1][1];
}
else {
y = arr[0][1];
}
bw.write(x+" "+y);
bw.flush();
br.close();
bw.close();
}
}
주의
x
반응형
'공부 정리 > 백준' 카테고리의 다른 글
[백준] 자바 1181 단어 정렬 (0) | 2021.08.19 |
---|---|
[백준] 자바 7568 덩치 (0) | 2021.08.18 |
[백준] 자바 4153 직각삼각형 (0) | 2021.08.16 |
[백준] 자바 10989 수 정렬하기 3 (0) | 2021.08.13 |
[백준] 자바 1427 소트인사이드 (0) | 2021.08.12 |
댓글