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

김건우·2024년 2월 4일
0

문제 풀이

목록 보기
41/62

나이 순 정렬


풀이 방법

이러한 정렬 문제는 예전에 풀어본 경험이 있어서 쉽게 해결했다.
이번엔 toString()이나 StringBuiler에 대해 새로운 사용법이 있어서 기록을 남긴다.

sort에서 Comparatorcompare 메서드를 Override해서 사용했는데,
lamda 함수로 간단하게 표현할 수 있다.

   members.sort((o1, o2) -> {
       if(o1.age == o2.age) {
           return 0;
       }
       return o1.age - o2.age;
   });

물론 여기서 if문에 해당하는 부분은 어저피 return 0 이기 때문에 없어도 무방하다.
(문제에서 나타낸 조건을 시각적으로 표현하려고 넣어봤다..)

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

class Member{
    int age;
    String name;

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

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

public class Main {
    static List<Member> members = new ArrayList<>();

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

        for(int i=0;i<n;i++) {
            StringTokenizer st = new StringTokenizer(br.readLine()," ");
            Member member = new Member(Integer.parseInt(st.nextToken()), st.nextToken());
            members.add(member);
        }

        members.sort(new Comparator<Member>() {
            @Override
            public int compare(Member o1, Member o2) {
                if(o1.age == o2.age) {
                    return 0;
                }
                return o1.age - o2.age;
            }
        });

        StringBuilder sb = new StringBuilder();
        for(Member m : members) {
            // 객체를 출력하면 해당 객체의 toString()이 출력
            sb.append(m);
        }
        System.out.println(sb);
    }
}
profile
공부 정리용

0개의 댓글