본문 바로가기
공부하자/알고리즘

[백준] 10814번 나이순 정렬 java

by snbrin 2022. 4. 13.

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

 

 

이건 좀..어려..웠다...

java

package javastd1;

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

public class bj10814 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		
		Member[] m = new Member[n];
		
		StringBuilder sb = new StringBuilder();
		
		//1.나이,이름 입력, m[i]에 입력값 저장
		for(int i=0; i<n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine()," ");
			int age = Integer.parseInt(st.nextToken());
			String name = st.nextToken();
			//2.입력한 나이, 이름을 별도 객체로 만들어 저장
			m[i] = new Member(age,name);
			
		}
		
		//3.정렬(comparator의 compare메소드 사용)
		//compare - 0 또는 정수 중 하나를 반환, 양의 정수일 경우 두 객체 위치를 바꾸는 역할
		Arrays.sort(m, new Comparator<Member>() {
			public int compare(Member m1, Member m2) {
				return m1.age - m2.age;
			}
		});
		
		//4.member클래스에서 만들어진 n줄 하나로 합치기
		for(int i=0; i<n; i++) {
			sb.append(m[i]);
		}
		
		//5.값 출력
		System.out.println(sb);
		
	}
	
	//member클래스
	public static class Member{
		int age;
		String name;
		
		public Member(int age, String name) {
			this.age = age;
			this.name = name;
		}
		//나이,이름 사이에 공백 추가, 이름 뒤에 줄바꿈
		public String toString() {
			return age + " " + name + "\n";
		}
	}
	
	
}