import java.util.*;
public class FourDot {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> list_x = new ArrayList<>();
List<Integer> list_y = new ArrayList<>();
int x, y; //x, y값
for (int i = 0; i < 3; i++) {
x = sc.nextInt();
y = sc.nextInt();
if (list_x.contains(x)) { //x 값이 기존의 list_x에 존재하는가?
list_x.remove(list_x.indexOf(x)); //존재하면 해당 값을 삭제해줌.
x = 0; //삭제 후 0값을 대체제로 넣어줌.
}
if (list_y.contains(y)) {
list_y.remove(list_y.indexOf(y));
y = 0;
}
list_x.add(x);
list_y.add(y);
}
//대체제로 넣은 0을 삭제해줌.
while (list_x.remove(Integer.valueOf(0))); //remove함수는 요소 삭제 후
// true(삭제 성공), false(삭제 할 게 없음) 리턴. 또한 remove 매개변수로 그냥 int 값을 주면
//해당 위치 값을 삭제해버림 그러므로 Integer(object) 객체를 넘겨줌.
while (list_y.remove(Integer.valueOf(0)));
System.out.println(list_x.get(0) + " " + list_y.get(0));
}
}
이번 문제는 세 점의 좌표를 입력 받은 후 축에 평행한 직사각형을 만들기 위해 필요한 네 번재 점의 좌표를 구하는 문제였습니다.
문제에서 축에 평행한 직사각형을 찾는 문제이기에 입력된 필요한 총 네 개의 점들은 각각 x, y축의 값들이 2개씩 중복 된다는 점을 이용했습니다. 예를 들어 첫 예제 입력을 보면 5,5 || 5,7 || 7, 5 가 입력되었습니다. x축에서 5가 2번 나오고 7이 한 번 나왔으므로 마지막 네 번째 점은 7이 됩니다. y축도 똑같은 원리로 7이 되는 것을 알 수 있습니다.
문제 접근 방법은 알았으니 기술적인 측면에서 어떤 방식으로 풀지 생각했고 ArrayList를 통해 중복된 값이 존재하면 해당 값을 0으로 대체하고 나중에 0 값들을 지운 후 남는 값을 출력했습니다.
for (int i = 0; i < 3; i++) {
x = sc.nextInt();
y = sc.nextInt();
if (list_x.contains(x)) { //x 값이 기존의 list_x에 존재하는가?
list_x.remove(list_x.indexOf(x)); //존재하면 해당 값을 삭제해줌.
x = 0; //삭제 후 0값을 대체제로 넣어줌.
}
if (list_y.contains(y)) {
list_y.remove(list_y.indexOf(y));
y = 0;
}
list_x.add(x);
list_y.add(y);
}
우선 for 문을 세 번 돌려 값들을 입력받았습니다. 이때 if문을 x, y에 각각 사용하여 x값이 arraylist에 존재하는지 확인했고 존재하면 해당 값을 0으로 바꿔줘서 add 시켜줬습니다.
while (list_x.remove(Integer.valueOf(0)));
while (list_y.remove(Integer.valueOf(0)));
System.out.println(list_x.get(0) + " " + list_y.get(0));
for 문이 끝난 후 0 값들을 삭제 후 get메서드를 사용하여 값을 출력했습니다.
이때 while문에는 remove 메서드의 삭제하지 못 했다면 false를 반환하는 성질을 사용했고 remove 메서드의 매개변수 값은 int형이 오면 index를 찾아가기 때문에 object 형인 Integer을 사용했습니다.
오랜만에 arraylist를 사용해서 문제를 풀 수 있어서 좋은 시간이었습니다. 문제 자체는 어렵지 않았는데 여러 기초적인 상식들과 사고력을 기를 수 있던 거 같습니다.
출처 : 백준 3009번 https://www.acmicpc.net/problem/3009
Git 주소 : https://github.com/LeejeongwooKuma/BaekJoon/blob/master/src/com/leejeongwoo/basicmath2/FourDot.java