문법/알게된 메소드
2차원 배열 정렬
코딩 화이팅
2023. 2. 20. 22:49
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();
int[][] dot=new int[T][2];
for (int x = 0; x < T; x++) {
for (int y = 0; y < 2; y++) {
dot[x][y]=sc.nextInt();
}
}
Arrays.sort(dot, new Comparator<int[]>() {
//2차 배열을 정렬해주기 위해 Arrays.sort를 써주고
//Comparator을 사용
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]) {//만약 앞에 두 값이 같다면
return o1[1]-o2[1];//오름차순 정렬
//내림차순 할거면 둘이 자리 바꿔줌.
}else
return o1[0]-o2[0];//오름차순 정렬
}
});
for (int i = 0; i < T; i++) {
for (int j = 0; j < 2; j++) {
System.out.print(dot[i][j]+" ");
}
System.out.println();
}
}
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
int[][] dot = new int[T][2];
for (int x = 0; x < T; x++) {
for (int y = 0; y < 2; y++) {
dot[x][y] = sc.nextInt();
}
}
Arrays.sort(dot, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[1] == o2[1]) {//위에 문자와 다르게
//y에 맞춰서기 때문에 숫자만 바꿔주면 된다.
return o1[0] - o2[0];//오름차순
} else
return o1[1] - o2[1];
}
});
for (int i = 0; i < T; i++) {
for (int j = 0; j < 2; j++) {
System.out.print(dot[i][j]+" ");
}
System.out.println();
}
}
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();
String[] words=new String[T];
for (int i = 0; i < T; i++) {
words[i]=sc.next();
}
Arrays.sort(words, new Comparator<String>() {
//위에 문제들과 유형은 비슷하다.
//int[]이 아닌 String으로 지정
@Override
public int compare(String o1, String o2) {
if (o1.length()==o2.length()) {//만약 길이가 같은 단어가 있다면
return o1.compareTo(o2);//비교해라.
}
else {
return o1.length()-o2.length();
}//아니면 길이만큼 오름차순
}
});
System.out.println(words[0]);
for (int i = 1; i < T; i++) {
if (!words[i].equals(words[i-1])) {
System.out.println(words[i]);
}
}
}
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int T=sc.nextInt();
String[][] arr=new String[T][2];
for (int i = 0; i < T; i++) {
for (int j = 0; j < 2; j++) {
arr[i][j]=sc.next();
}
}
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return Integer.parseInt(o1[0])-Integer.parseInt(o2[0]);
}
//위에 문제들처럼 뭐가 같을 때 비교할게 없으니 그냥 String에서 int형으로
//형변환해준 뒤 그값들로만 비교한다.
});
for (int i = 0; i < T; i++) {
for (int j = 0; j < 2; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}