제가 풀어본 문제를 올리는 것으로 코드가 전혀 완벽하지 않습니다.
태클 걸어주세요.
문제

계속해서 풀어봤던 문제입니다 comparator를 사용하면 쉽게 풀 수 있습니다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Q10814 {
//나이순 정렬
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(bf.readLine());
user[] arr = new user[N];
for(int i=0;i<N;i++) {
arr[i] = new user();
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
arr[i].setNum(i);
arr[i].setAge(Integer.parseInt(st.nextToken()));
arr[i].setName(st.nextToken());
}
Arrays.sort(arr,new Comparator<user>() {
@Override
public int compare(user o1, user o2) {
System.out.println(o1.getName() + " " + o2.getName());
if(o1.getAge() == o2.getAge()) {
return o1.getNum()-o2.getNum();
}else {
return o1.getAge()-o2.getAge();
}
}
});
for(user a : arr) {
bw.write(a.getAge() + " " + a.getName() + "\n");
}
bw.flush();
bw.close();
bf.close();
}
}
class user{ //user저장
int num;
int age;
String name;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
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;
}
}
코드설명
user를 담을 class를 따로 만들어 주고 배열로 선언합니다.
그리고 comparator를 이용하여 기준을 정해주면 됩니다.
끝!
'코딩테스트 > 백준' 카테고리의 다른 글
[백준/10773] 제로 - 자바 (0) | 2021.08.03 |
---|---|
[백준/1260] DFS와 BFS - 자바 (0) | 2021.07.24 |
[백준/1181] 단어정렬 - 자바 (0) | 2021.07.22 |
[백준/1427] 소트인사이드 - 자바 (0) | 2021.07.19 |
[백준/10989] 수 정렬하기3 - 자바 (0) | 2021.07.16 |