본문 바로가기
알고리즘/백준

백준 10814 나이순 정렬 (JAVA 자바 풀이)

by Renechoi 2022. 12. 2.

백준 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";
		}
	}
	
}

 

 

 

 

 

 

 

반응형