728x90
반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 좌표 정렬하기 2차원 배열을 이용
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2]; //이렇게 한 이유 좌표가 x, y 따로
// 문자열 분리는 String Tokenizer 이용
StringTokenizer st;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
// System.out.println("arr[i][0] = " + arr[i][0]);
// System.out.println("arr[i][0] = " + arr[i][1]);
}
// 힙 메모리 문제가 생겨서 다시 도전
// 그래도 다시 해봐야할 것이 이제 람다 이용해서 풀어보기.
Arrays.sort(arr, (e1,e2)->{
if(e1[0] == e2[0]) {
return e1[1]-e2[1];
}
else {
return e1[0]-e2[0];
}
});
for (int i=0; i<N; i++) {
sb.append(arr[i][0]+" "+arr[i][1]).append('\n');
}
System.out.println(sb);
}
}
오늘 배운 개념
1) StringTokenizer
- String Tokenizer 를 통해서 스트링이 잘려져서 들어갈 수 있다.
2) Arrays.sort 에 함수 람다식으로 비교구문을 넣을 수 있다.
- arrays.sort ( 정렬할 대상, 두번째로는 비교구문 ) 을 넣어서 식을 완성시킨다 .
- https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#compare-T-T-
https://st-lab.tistory.com/243
3) 다차원 배열
- 다차원 배열을 통해 M*N 을 만들 수 있다. int [] [] arr = new int [M] [N]. --- N 이 만약 비워져있으면 가변정렬
728x90
반응형
'이유's STUDY > 알고리즘 문제풀이' 카테고리의 다른 글
[ 백준 ] 1181 - 단어 정렬 / Java 이용 (0) | 2021.07.27 |
---|---|
[ 백준 ] 11651- 좌표 정렬하기 2 (0) | 2021.07.27 |
[ 백준 ] 2108 번 통계학 - Java 이용 (0) | 2021.07.26 |
[ 백준 ] 10989번 수 정렬하기3 / [ Java 이용 ] (0) | 2021.07.25 |
[ 백준 ] 2751번 - 수 정렬하기2 / [Java 이용 ] (0) | 2021.07.25 |