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

ho's·2022년 4월 29일
0

문제

회원들의 목록이 주어졌을 때

  • 나이순으로 먼저 정렬을 한다
  • 나이가 같다면 이름순으로 정렬을 한다.

풀이

  • TestCase의 개수를 입력 받는다.
  • TestCase 만큼 문자열을 입력받는다.
  • 나이와 숫자를 담기 위한 배열을 만든다. (2중 배열)
  • Arrays 클래스의 sort메소드를 통해 정렬을 한다.
  • 출력한다.

위의 과정을 코드로 짜면 된다!
나는 2중배열을 만들 생각을 못해서, 시간이 많이 걸렸다.

소스코드

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

public class Main {
    public static void main(String[] args) {
    
public class Baekjoon_10814 {
    public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int N = scan.nextInt();
            String[][] arr = new String[N][2];

            for(int i=0;i<N;i++){
                arr[i][0] = scan.next();
                arr[i][1] = scan.next();
            }

            Arrays.sort(arr, new Comparator<String[]>() {
                @Override
                public int compare(String[] o1, String[] o2) {
                    return Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]);
                }
            });

            for(int i=0;i<N;i++)
                System.out.println(arr[i][0]+" "+arr[i][1]);
    }
}

           
           
           }
   }


수업시간에 정렬을 할때 객체를 생성해서 한 방법도 알아보자.
내 생각으로는 문제를 풀 수 가 없어,
https://st-lab.tistory.com/113 님이 쓴 코드를 보고, 작성하고 이해하는 것을 목표로 했다



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

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

        Scanner in = new Scanner(System.in);
        int N = in.nextInt();

        Person[] p = new Person[N];

        for(int i=0;i<N;i++)
            p[i] = new Person(in.nextInt(), in.next());

        Arrays.sort(p, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.age - o2.age;
            }
        });


        StringBuilder sb = new StringBuilder();
        for(int i=0;i<N;i++)
            sb.append(p[i]);

        System.out.println(sb);



    }


    public static class Person{
        int age;
        String name;

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

        @Override
        public String toString() {
            return "Person{" +
                    "age=" + age +
                    ", name='" + name + '\'' +
                    '}';
        }

    }
}

profile
그래야만 한다

0개의 댓글