백준
[백준] 10814번 : 나이순 정렬 - JAVA [자바]
종식당
2025. 3. 3. 10:15
728x90
반응형
https://www.acmicpc.net/problem/10814
📝 문제 설명
입력받은 정수만큼의 사람의 나이와 이름을 입력받는다. 그 후 사람들을 나이 순으로 정렬한다.
만약 나이가 같으면 먼저 입력한 순서대로 정렬하여 출력하면 된다.
✨ 제출 코드
import java.io.*;
import java.util.*;
public class Main {
public static class Info{
int age;
String name;
public Info(int age, String name){
this.age = age;
this.name = name;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
List<Info> lst = new ArrayList<>();
for(int i = 0; i < N; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
lst.add(new Info(Integer.parseInt(st.nextToken()), st.nextToken()));
}
Collections.sort(lst, (a,b) -> Integer.compare(a.age, b.age));
for(Info person : lst){
sb.append(person.age).append(" ").append(person.name).append("\n");
}
System.out.println(sb);
}
}
✌️ 코드 설명
먼저 입력받은 정수 만큼의 사람들이 나이와 이름을 저장할 건데 이때 class를 하나 만들어서 사람들의 나이와 정보를 하나의 객체로 관리했다. 이러면 리스트에 추가할 때도 객체 전체를 추가할 수 있어 더 편리한 것 같다.
그래서 사람들의 정보를 담고 있는 Info 타입의 리스트를 만들었고 이 리스트를 정렬해주었다.
정렬 조건은 이 객체의 나이 순으로 오름차순으로 정렬했으며 리스트에 넣을 때 입력받은 순서로 넣어줬으니 나이가 같으면 입력받은 순으로 정렬될 것이다.
그리고 StringBuilder로 출력 형식을 맞춰주었다.
♨️ 마무리
파이썬으로 정렬 문제를 풀 때 감을 잡기 위해서 엄청 많이 풀어본 기억이 있는데 자바 정렬이 더 복잡하고 내가 아직 미숙한 거 같아서 자바로도 정렬 문제를 많이 풀어보려 한다.
그리고 하나의 객체에 대해서 정보를 여러 개 가져와 처리할 때는 class를 만들어서 풀이를 진행하는 게 나아 보인다.
728x90
반응형