본문
151226A(토)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
int T = 0;
int N = 0;
int result;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
T = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ArrayList<Integer> intMen = new ArrayList<Integer>();
ArrayList<Integer> intWom = new ArrayList<Integer>();
for(int j = 0; j < T; j++) {
result = 0;
try {
N = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
intMen = inputInteger(intMen, N);
intWom = inputInteger(intWom, N);
quickSort(intMen, 0, intMen.size() - 1);
quickSort(intWom, 0, intWom.size() - 1);
for(int k = 0; k < N; k++) {
result = result + Math.abs(intMen.get(k) - intWom.get(k));
}
System.out.println(result);
}
}
public static void quickSort(ArrayList<Integer> a, int leftmost, int rightmost) {
if(rightmost - leftmost <= 0) {
return;
}
else {
int pivot = a.get(rightmost);
int i = leftmost - 1;
int j = rightmost;
while(true) {
while(a.get(++i) < pivot);
while(j > leftmost && a.get(--j) > pivot);
if(i >= j)
break;
else
swap(a, i, j);
}
swap(a, i, rightmost);
quickSort(a, leftmost, i - 1);
quickSort(a, leftmost + 1, rightmost);
}
}
public static void swap(ArrayList<Integer> a, int i, int j) {
int temp;
temp = a.get(i);
a.set(i, a.get(j));
a.set(j, temp);
}
public static ArrayList<Integer> inputInteger(ArrayList<Integer> inputArr, int memNum) {
BufferedReader bri = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = null;
try {
token = new StringTokenizer(bri.readLine());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(token.hasMoreTokens()) {
inputArr.add(Integer.parseInt(token.nextToken()));
}
return inputArr;
}
}
질문과 답변 게시판에 어떤분께서 Scanner 대신에 BufferdReader를 사용해보라고 답변을 달아주셨다.
답변대로 BufferedReader를 사용하여 StringTokenizer로 공백을 끊어서 입력받았다.
결과는 시간초과이다.
알아보니 go, java 등 C++언어가 아니면 시간초과가 꽤 많이 발생한다고 한다.
이문제는 여기서 마무리하고 내일은 다른문제를 풀겠다.
'Architecture > ACM-ICPC' 카테고리의 다른 글
160106A(수) (0) | 2016.01.07 |
---|---|
160103A(일) (0) | 2016.01.03 |
160103A(일) (0) | 2016.01.03 |
151222A(화) (0) | 2015.12.23 |
151221A(월) (0) | 2015.12.21 |
댓글