[문제]
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다.
이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
[풀이]
import java.io.*;
import java.util.*;
class Person {
int age;
String name;
public Person(int i, String s) {
this.age=i;
this.name=s;
}
}
public class P10814 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
Person[] people=new Person[N];
for(int i=0;i<N;i++) {
String input=br.readLine();
String[] tmp=input.split(" ");
Person person=new Person(Integer.parseInt(tmp[0]), tmp[1]);
people[i]=person;
}
br.close();
Arrays.sort(people, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.age-p2.age;
}
});
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
for(Person p:people) bw.append(String.valueOf(p.age)+" "+p.name+"\n");
bw.close();
}
}
이번 코테는 Comparator을 사용하여 여러 정보 중 한 정보로만 정렬할 수 있도록 풀이해야 하는 문제였다.
Comparator을 안 쓴지 꽤 돼서 가물가물 ,, 해서 살짝 찾아보고 사용했다.
까먹지 않도록 Comparator를 사용할만한 코테를 자주 풀어야겠다..
그리고 이번 문제는 hash로도 접근할 수 있을까? 라는 생각을 했다.
해시를 잘 몰라서 안 쓰고 넘어가기는 했는데 다음에 해시를 공부하면서 또다시 풀어볼만한 문제라는 생각이 든다.
부분 정렬 문제의 기초 다지기로 좋은 문제같다!
'👩🏻💻 코테' 카테고리의 다른 글
| 프로그래머스 Lv.2 : 타겟 넘버 🅾️ (0) | 2024.03.10 |
|---|---|
| 백준 S5 1427 : 소트인사이드 🅾️ (0) | 2024.03.08 |
| 백준 S4 10866 : 덱 🅾️ (0) | 2024.03.03 |
| 프로그래머스 Lv.1 : 다트 게임 🅾️ (0) | 2024.02.29 |
| 프로그래머스 Lv.1 : 내적 🅾️ (0) | 2024.02.29 |