문제
축에 평행한 직사각형의 세 꼭짓점이 주어질 때, 나머지 한 꼭짓점의 좌표를 구한다.
입력
세 줄에 걸쳐 세 점의 x, y 좌표가 주어진다.
출력
네 번째 점의 x, y 좌표를 출력한다.
예제
| 입력 | 출력 |
|---|---|
5 5 5 7 7 5 | 7 7 |
풀이
축에 평행한 직사각형에서 x좌표와 y좌표는 각각 정확히 두 개씩 같은 값이 존재한다. 세 점 중 짝이 없는 좌표가 네 번째 점의 좌표이다.
- 세 점의 좌표를 읽는다
- x좌표 중 두 점이 같은 값이면 나머지 하나가 네 번째 점의 x좌표이다
- y좌표도 동일한 방식으로 결정한다
- 구한 (x, y)를 출력한다
핵심 아이디어: 직사각형의 대변은 평행하므로, 각 축에서 한 번만 등장하는 좌표값이 네 번째 점의 좌표가 된다.
코드
package day649;
import java.io.*;
import java.util.*;
public class Day608BOJ3009네번째점 {
public static void main(String[] args) throws Exception {
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;
if (coord_1[0] == coord_2[0])
x = coord_3[0];
else if (coord_1[0] == coord_3[0])
x = coord_2[0];
else
x = coord_1[0];
if (coord_1[1] == coord_2[1])
y = coord_3[1];
else if (coord_1[1] == coord_3[1])
y = coord_2[1];
else
y = coord_1[1];
System.out.println(x + " " + y);
}
}복잡도
- 시간: O(1)
- 공간: O(1)