import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
static int[] pointXArray = new int[1000];
static int[] pointYArray = new int[1000];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int cases = Integer.parseInt(sc.nextLine()) * 3;
int count = 1;
List<String> pointList = new ArrayList<>();
while (cases-- > 0) {
validAndCheck(sc.nextLine());
if (count % 3 == 0) {
pointList.add(findLastPoint());
}
count++;
}
pointList.forEach(System.out::println);
}
private static String findLastPoint() {
StringBuilder lastPoint = new StringBuilder();
for (int i = 0; i < pointXArray.length; i++) {
if (pointXArray[i] > 0 && pointXArray[i] % 2 == 1) {
lastPoint.append(i + " ");
}
}
for (int i = 0; i < pointYArray.length; i++) {
if (pointYArray[i] > 0 && pointYArray[i] % 2 == 1) {
lastPoint.append(i);
}
}
pointXArray = new int[1000];
pointYArray = new int[1000];
return lastPoint.toString();
}
private static void validAndCheck(String input) {
String[] split = input.split(" ");
if (split.length == 2) {
for (int i = 0; i < split.length; i++) {
int point = Integer.parseInt(split[i]);
if (point < 1 || point > 1000) {
throw new IllegalStateException();
}
if (i == 0) {
pointXArray[point]++;
} else {
pointYArray[point]++;
}
}
} else {
throw new IllegalStateException();
}
}
}
회고.
algospot.com 에서 tutorial의 왕초보급 문제 라길래, 우습게 알고 시작했는데
생각했던것보다 많~~이 어려웠다.
어려웠던 점은 입력 첫줄에 테스트케이스의 수를 입력하고,
테스트 케이스의 수만큼 결과를 구해야하는 부분이 어려웠다.
첫번째 케이스의 좌표와 두번째 케이스의 좌표가 섞일수 있으므로 좌표 입력이 3번 이뤄졌을 때, 나머지 좌표를 구해서 어딘가 담고 있다가
입력이 모두 마치면 출력해줘야하는 점이 좀 까다로웠고, 나머지 좌표를 구하는 방법은 생각보다 금방 알았는데,
프로그램으로 어떤 방법으로 구현해야할지 한참 고민했다.
결국, 1000 사이즈의 x int배열, 1000 사이즈의 y int배열을 만들어서
좌표가 입력되면 배열의 좌표번째의 수를 1씩 더해주어 그 수가 홀수인 경우가 각 축의 나머지 좌표가 되는 방식으로 구현하였다.
내가 뭔가 생각을 어렵게 한건지, 내가 머리가 나쁜건지 잘모르겠다.. 왜 이렇게 소스도 장황하고 문제가 어렵게 느껴졌을까??
그런데 이상하게 www.algospot.com 에 답안을 제출하면 런타임오류가 뜬다. 왜그럴까 ㅡ.ㅡ;