문법/알게된 메소드

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();
		}
	}
}