https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
이건 좀..어려..웠다...
java
package javastd1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class bj10814 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Member[] m = new Member[n];
StringBuilder sb = new StringBuilder();
//1.나이,이름 입력, m[i]에 입력값 저장
for(int i=0; i<n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
//2.입력한 나이, 이름을 별도 객체로 만들어 저장
m[i] = new Member(age,name);
}
//3.정렬(comparator의 compare메소드 사용)
//compare - 0 또는 정수 중 하나를 반환, 양의 정수일 경우 두 객체 위치를 바꾸는 역할
Arrays.sort(m, new Comparator<Member>() {
public int compare(Member m1, Member m2) {
return m1.age - m2.age;
}
});
//4.member클래스에서 만들어진 n줄 하나로 합치기
for(int i=0; i<n; i++) {
sb.append(m[i]);
}
//5.값 출력
System.out.println(sb);
}
//member클래스
public static class Member{
int age;
String name;
public Member(int age, String name) {
this.age = age;
this.name = name;
}
//나이,이름 사이에 공백 추가, 이름 뒤에 줄바꿈
public String toString() {
return age + " " + name + "\n";
}
}
}
'공부하자 > 알고리즘' 카테고리의 다른 글
[프로그래머스] Lv.1 평균구하기 java (0) | 2022.04.14 |
---|---|
[프로그래머스] Lv.1 짝수와 홀수 java, c (0) | 2022.04.14 |
[백준] 11650번 좌표 정렬하기 java (0) | 2022.04.13 |
[백준] 2750번 수 정렬하기 java (0) | 2022.04.13 |
[백준] 11651번 좌표 정렬하기2 java (0) | 2022.04.13 |