티스토리 뷰

문제

- 가입한 사람들의 나이와 이름이 가입한 순서대로 주어짐

- 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬

 

해결방법

Comparable 인터페이스를 상속받아 compareTo 메소드를 Override하여 비교할 수 있도록하여 정렬하였다. age와 name을 모두 담을 수 있는 Person 클래스를 만들어 compareTo 메소드를 Override하여 나이 순으로 비교할 수 있도록 하였다. 그 후 입력받은 사람들의 데이터를 Arrays.sort()를 이용하여 정렬한 뒤 출력하였다.

 

코드

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

class Main{
    public static class Person implements Comparable<Person>{
        int age;
        String name;

        Person(int age, String name){
            this.age = age;
            this.name = name;
        }

        // 나이로 비교할 수 있도록 compareTo 메소드 Override
        @Override
        public int compareTo(Person o) {
            return this.age - o.age;
        }
    }

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        Person[] person = new Person[N];

        for(int i = 0; i<N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            person[i] = new Person(Integer.parseInt(st.nextToken()), st.nextToken());
        }

        Arrays.sort(person);	// person 배열 정렬

        for(int i = 0; i<N; i++){
            System.out.println(person[i].age + " " + person[i].name);
        }

        br.close();
    }
}

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 10828번 스택(JAVA)  (1) 2022.07.28
[백준] 10816번 숫자 카드 2(JAVA)  (0) 2022.07.28
[백준] 10773번 제로(JAVA)  (0) 2022.07.25
[백준] 10250번 ACM 호텔(JAVA)  (0) 2022.07.24
[백준] 9012번 괄호(JAVA)  (0) 2022.07.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday