본문 바로가기

👩🏻‍💻 코테

백준 S5 10814 : 나이순 정렬 🅾️

[문제]

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다.

이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.

 

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로도 접근할 수 있을까? 라는 생각을 했다.

해시를 잘 몰라서 안 쓰고 넘어가기는 했는데 다음에 해시를 공부하면서 또다시 풀어볼만한 문제라는 생각이 든다.

부분 정렬 문제의 기초 다지기로 좋은 문제같다!