반응형
풀이 >
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Baekjoon11650 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int count = Integer.parseInt(br.readLine());
int[][] array = new int[count][2];
for (int i = 0; i < count; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
array[i][0] = Integer.parseInt(st.nextToken());
array[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(array, (o1, o2) -> {
if (o1[0] == o2[0]) return Integer.compare(o1[1], o2[1]);
return Integer.compare(o1[0], o2[0]);
});
for (int[] is : array)
bw.append(String.valueOf(is[0])).append(" ").append(String.valueOf(is[1])).append("\n");
bw.flush();
br.close();
bw.close();
}
}
객체 배열의 값을 정렬할때 Overriding 해야하는 Comparator 의 compare 메소드 사용법
//람다식 표현
Arrays.sort(array, (o1, o2) -> {
if (o1[0] == o2[0]) return Integer.compare(o1[1], o2[1]);
return Integer.compare(o1[0], o2[0]);
});
첫번째 인자와 두번째 인자를 비교하는 부분을 재정의한다.
음수값을 리턴하면 두 객체의 자리를 바꾸고 (내림차순)
0이나 양수가 리턴되면 자리는 바뀌지 않는다!
+Integer.compare(x,y)
x와 y를 비교해 x값이 y값보다 작으면 -1리턴.
같거나, x가 y보다 크다면 0 리턴
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[JAVA]백준 - 1018.체스판 다시 칠하기 (0) | 2020.11.11 |
---|---|
[JAVA]백준 - 1181.단어 정렬(compare 오버라이딩) (0) | 2020.11.10 |
[JAVA]백준 - 1259.팰린드롬수 (0) | 2020.11.08 |
[JAVA]백준 - 11654.아스키 코드 (0) | 2020.11.05 |
[JAVA]백준 - 2338.긴자리 계산 (0) | 2020.11.04 |