백준 10814번 나이순 정렬

2차원 배열을 사용해서 나이를 문자로 받은뒤 정수형으로 변환시키거나 나이와 이름을 가지고 있는 클래스를 만들어서 풀면 된다. 클래스를 이용해서 풀어보았다. Arrays.sort를 사용해 정렬하였고, 나이가 다른 경우 나이를 뺴줘서 정렬을 해주었지만, 나이가 같은 경우는 0을 리턴해 그대로 있게 해뒀다. 또한 조건으로 나이가 같으면 가입 순서대로 정렬을 하라고 되있다만, 이경우에는 가입 순서대로 입력이 되어있기에, 가입 순서대로 정렬이 되어있다. 따라서 건드릴 필요가 없다. 다만, 메모리와 시간이 무지막지하게 많이 써서 개량이 어느정도 필요해 보인다. 

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        Person[] personList=new Person[n];
        scanner.nextLine();
        for(int i=0;i<n;i++){
            personList[i]=new Person();
            personList[i].setAge(scanner.nextInt());
            personList[i].setName(scanner.nextLine());
        }


        Arrays.sort(personList,(x1,x2)->{
            if(x1.getAge()!=x2.getAge())
                return x1.getAge()-x2.getAge();
            else
                return 0;
        });

        for(int i=0;i<n;i++)
            System.out.println(personList[i]);
    }
}

class Person{
    int age;
    String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

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

'Algorithm' 카테고리의 다른 글

조합, 순열 알고리즘  (1) 2023.06.06