Problem Solving/정렬

BOJ10814 나이순 정렬

윤재에요 2024. 2. 5. 21:35

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

import java.io.*;
import java.util.*;
public class Main
{   public static class User{
        protected String name;
        protected Integer age;
        public User(String name,Integer age){
            this.name = name;
            this.age =age;
        }
    }
	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 n = Integer.valueOf(br.readLine());
		User[] users = new User[n];
        for(int i=0; i<n;i++){
            String[] temp = br.readLine().split(" ");
            users[i] = new User(temp[1],Integer.valueOf(temp[0]));
        }

		
		Arrays.sort(users,(u1,u2)->(u1.age-u2.age));
		
		for(int i=0;i<n;i++){
            bw.write(users[i].age+" "+ users[i].name+"\n");
		}
		bw.flush();
	}
}
// 클래스를 분리
import java.io.*;
import java.util.*;
public class Main
{   
	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 n = Integer.valueOf(br.readLine());
		User[] users = new User[n];
        for(int i=0; i<n;i++){
            String[] temp = br.readLine().split(" ");
            users[i] = new User(temp[1],Integer.valueOf(temp[0]));
        }

		
		Arrays.sort(users,(u1,u2)->(u1.age-u2.age));
		
		for(int i=0;i<n;i++){
            bw.write(users[i].age+" "+ users[i].name+"\n");
		}
		bw.flush();
	}
}
public class User{
        String name;
        Integer age;
        User(String name,Integer age){
            this.name = name;
            this.age =age;
        }
 }

 

 

나는 Object 정렬의 stable 성질를 이용해서 아이디를 클래스의 원소로 넣지 않았다.