[백준/자바] 10814번: 나이순 정렬

수박강아지·2025년 9월 16일

BAEKJOON

목록 보기
135/174

문제

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

풀이

  • 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다.
  • 회원들을 나이 오름차순, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하여 출력

회원들의 정보를 관리할 수 있는 클래스를 사용하여 풀면 쉽게 해결할 수 있습니다.

	static class Member implements Comparable<Member> {
		int age;
		String name;
		
		Member (int age, String name) {
			this.age= age;
			this.name = name;
		}
		
		@Override
		public int compareTo(Member o) {
			return this.age - o.age;
		}
	}
  • 나이, 이름을 저장하고 나이순으로 정렬시켰습니다.
  • 가입한 순서대로 입력이 들어오므로 나이만 오름차순 정렬 시키면 나이가 같은 경우는 입력이 들어온 순으로 유지가 되어 있습니다.

코드

import java.util.*;
import java.io.*;

public class Main_10814 {
	
	static class Member implements Comparable<Member> {
		int age;
		String name;
		
		Member (int age, String name) {
			this.age= age;
			this.name = name;
		}
		
		@Override
		public int compareTo(Member o) {
			return this.age - o.age;
		}
	}
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		
		Member[] members = new Member[n];
		for (int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int age = Integer.parseInt(st.nextToken());
			String name = st.nextToken();
			members[i] = new Member(age, name);
		}
		
		Arrays.sort(members);
		
		StringBuilder sb = new StringBuilder();
		for (Member m : members) sb.append(m.age + " " + m.name + '\n');
		System.out.println(sb.toString());
	}
}

0개의 댓글