본문 바로가기

CodingTEST

[백준 10814] 나이순 정렬 (JAVA)

반응형

백준 10814번 문제 - 나이순 정렬

 


문제 분석

 

 

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

해결 키 포인트

 

  • 클래스(Member) 생성
    • 나이 (age)
    • 이름 (name)
    • 순서  (index)
  • 클래스가 implements Comparable<Member> 하도록 한다.
    • 정렬 방법: 나이가 작은 순, 나이가 동일할 경우 입력된 순서 순으로 !
  • 출력을 쉽게하기 위해 Member의 toString을 override하기

코드

 

import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;

public class Main {
    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, i);
        }

        Arrays.sort(members);

        for (int i = 0; i < N; i++) {
            System.out.println(members[i]);
        }

    }

    public static class Member implements Comparable<Member> {

        int age;
        String name;
        int index;
        public Member(int age, String name, int index) {
            this.age = age;
            this.name = name;
            this.index = index;
        }

        @Override
        public String toString() {
            return age + " " + name;
        }

        @Override
        public int compareTo(Member m) {
            if(age == m.age) {
                return index - m.index;
            }
            return age - m.age;
        }
    }
}
반응형