백준 문제풀이

10814. 나이순 정렬 (자바, Java)

뮤츠 2022. 10. 1. 22:09

int와 String의 2차원 배열이고, int순으로 정렬하라는 문제입니다.

왜냐하면 나이순으로 정렬하고, 나이가 같으면 이름순이 아니라 가입순인데, 입력값이 가입순으로 주어진다고 했기 때문입니다.

앞선 문제들하고 딱히 다를게 없습니다. 나이순으로 비교하도록 Arrays.sort를 Override해줘서 해결합니다.

저는 split으로 받기 위해, 앞에 나이값도 int가 아닌 string으로 받아 변환했습니다.

대안인 StringTokenizer 또한 string으로 받아야해서 비슷.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String[][] xy = new String[n][2]; // 값을 받을 2차원배열선언
		
		for (int i=0; i<n; i++) {
			String str1 = br.readLine();
			String[] str2 = str1.split(" "); // 입력값을 쪼개 배열로받기
			xy[i][0] = str2[0];
			xy[i][1] = str2[1];
		}
		
		Arrays.sort(xy, (e1, e2) -> {
			return Integer.parseInt(e1[0])-Integer.parseInt(e2[0]);
		});
		
		StringBuilder sb = new StringBuilder();
		
		for (int i=0; i<n; i++) {
			sb.append(xy[i][0] + " " + xy[i][1] + "\n");
		}
		
		System.out.println(sb);

	}

}