백준 10814 나이순 정렬 (JAVA 자바 풀이)
📌 문제
첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000)
둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다.
⚔ 입력
첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다.
📣 출력
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
💎 문제 분석
이 경우엔 출력을 해주면 되기 때문에 array에 답을 쌓아가는 방식으로 풀이하면 Comparator를 쓰지 않아도 될 수 있다. 예를 들어 array를 설정해 두고 거기다가 나이를 idx 일치로 넣는 방식이다.
하지만 나이와 이름이 주어지기 때문에 객체로서 member를 생성하는 풀이가 좋다고 생각한다.
💡 코드 구현
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 Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int numberOfPeople = Integer.parseInt(bufferedReader.readLine());
Member[] members = new Member[numberOfPeople];
receiveMembers(bufferedReader, numberOfPeople, members);
Arrays.sort(members, Comparator.comparingInt(member -> member.age));
drawAnswer(members);
}
private static void drawAnswer(Member[] members) {
StringBuilder stringBuilder = new StringBuilder();
for (Member member : members) {
stringBuilder.append(member);
}
System.out.println(stringBuilder);
}
private static void receiveMembers(BufferedReader bufferedReader, int numberOfPeople, Member[] members) throws IOException {
for (int i = 0; i < numberOfPeople; i++) {
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int age = Integer.parseInt(stringTokenizer.nextToken());
String name = stringTokenizer.nextToken();
members[i] = Member.of(age, name);
}
}
private static class Member {
int age;
String name;
private Member(int age, String name) {
this.age = age;
this.name = name;
}
public static Member of(int age, String name) {
return new Member(age, name);
}
@Override
public String toString() {
return age + " " + name + "\n";
}
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 10870 피보나치 수 5 (JAVA 자바 풀이) (0) | 2022.12.03 |
---|---|
백준 18870 좌표 압축 (JAVA 자바 풀이) (0) | 2022.12.03 |
백준 11651 좌표 정렬하기 2 (JAVA 자바 풀이) (0) | 2022.12.02 |
백준 11650 좌표 정렬하기 (Python 파이썬 풀이) (0) | 2022.12.02 |
백준 2563 색종이 (JAVA 자바 풀이) (0) | 2022.12.02 |