블로그 이전, 2023. 4. 27. 23:37 에 작성했던 글입니다.

해결 방법
Ex.
(1,2)
(1,5)
(4,5)
세 좌표가 주어졌을 때 x좌표끼리, y 좌표끼리 같음을 알 수 있다.
여기서 직사각형을 만들려면 (4,2)가 필요한데
(1,2)
(1,5)
(4,5)
(4,2)
추가해보면 더 확실하게 x끼리 y끼리 같음을 알 수 있다.
(1,2)
(1,5)
(4,5)
다시 세 좌표만 놓고 보았을 때 안 같은 것만 빼서 그대로 x는 x로 출력, y는 y로 출력하면 된다.
여기서는 x좌표의 4가 같은 짝이 없고 y 좌표의 2가 같은 짝이 없다.
그대로 출력하면 4 2
이를 바탕으로 코딩을 하면 된다.
내가 부족했던 점
규칙은 발견했다. 근데 단순 대입하면 되는 걸 굳이 불필요하게 for문을 이용해서 배열을 초기화하려고 했던 것이 비효율적이었다. StringTokenizer 사용도 br.readLine사용도 항상 for문 안에서 썼기 때문에 for문에 넣으려고 하니
오히려 불필요하게 길어지고 가독성도 떨어졌다. 단순대입하는게 오히려 경우의 수가 적어서 훨씬 깔끔했다.
늘 사용하던 방법 말고 그냥 경우의 수대로 나열하는 것이 더 직관적이고 깔끔할 수 있다.
나의 코드
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] coor_1 = {Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken())};
st=new StringTokenizer(br.readLine());
int[] coor_2 = {Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken())};
st=new StringTokenizer(br.readLine());
int[] coor_3 = {Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken())};
int x,y;
if(coor_1[0]==coor_2[0]){
x=coor_3[0];
}
else if(coor_1[0]==coor_3[0]){
x=coor_2[0];
}
else{
x=coor_1[0];
}
if(coor_1[1]==coor_2[1]){
y=coor_3[1];
}
else if(coor_1[1]==coor_3[1]){
y=coor_2[1];
}
else{
y=coor_1[1];
}
bw.write(x+" "+y);
br.close();
bw.flush();
bw.close();
}
}
'알고리즘 리뷰' 카테고리의 다른 글
| 백준 JAVA 10811 바구니 뒤집기 리뷰 (0) | 2023.08.29 |
|---|---|
| 백준 JAVA 10813 공 바꾸기 리뷰 (0) | 2023.08.29 |
| 백준 JAVA 11943 파일 옮기기 리뷰 (0) | 2023.08.29 |
| JAVA 백준 15552 빠른 A+B 리뷰 (0) | 2023.08.29 |
| JAVA 백준 2338 긴자리 계산 리뷰 (0) | 2023.08.29 |