알고리즘/백준

[파이썬, 자바] BOJ_10814(나이순 정렬)

딱따구르리 2021. 4. 2. 12:57
728x90
반응형

문제

 

www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net


 

해설

 

이 문제는 가입한 순서대로 입력이 되기 때문에 나이만 비교하면 된다.

 

파이썬은 람다식을 이용해 비교를 했고,

자바는 이차원 배열을 이용해 비교를 했다.

 

 


코드

 

-파이썬

#백준 10814(나이순 정렬)

n = int(input())  #회원 수
member = []

for _ in range(n):
    age, name = map(str, input().split())  #회원 나이, 이름
    age = int(age)
    member.append((age, name))

member.sort(key=lambda age: age[0])

for i in member:
    print(i[0], i[1])

 

-자바

//백준 10814(나이순 정렬)
import java.util.*;

public class Boj_10814 {

	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();  //회원 수
		
		String[][] mem = new String[n][2];  //나이, 이름
	
		for(int i = 0; i < n; i++) {
			mem[i][0] = sc.next(); //나이
			mem[i][1] = sc.next(); //이름
		}
		
		Arrays.sort(mem, new Comparator<String[]>() {
			public int compare(String[] m1, String[] m2) {
				//나이로만 비교
				return Integer.compare(Integer.parseInt(m1[0]), Integer.parseInt(m2[0]));
			}
		});
		
		for(int i = 0; i < n; i++) {
			System.out.println(mem[i][0] + " " + mem[i][1]);
		}
	}
	

}
728x90
반응형