μ•Œκ³ λ¦¬μ¦˜ 문제/BOJ_Java

[BOJ/Step12] 10814 : λ‚˜μ΄μˆœ μ •λ ¬ (JAVA)

NaNaRinπŸ™ƒ 2021. 1. 31. 17:13

www.acmicpc.net/problem/10814

 

10814번: λ‚˜μ΄μˆœ μ •λ ¬

온라인 저지에 κ°€μž…ν•œ μ‚¬λžŒλ“€μ˜ λ‚˜μ΄μ™€ 이름이 κ°€μž…ν•œ μˆœμ„œλŒ€λ‘œ 주어진닀. μ΄λ•Œ, νšŒμ›λ“€μ„ λ‚˜μ΄κ°€ μ¦κ°€ν•˜λŠ” 순으둜, λ‚˜μ΄κ°€ κ°™μœΌλ©΄ λ¨Όμ € κ°€μž…ν•œ μ‚¬λžŒμ΄ μ•žμ— μ˜€λŠ” μˆœμ„œλ‘œ μ •λ ¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„

www.acmicpc.net


문제

온라인 저지에 κ°€μž…ν•œ μ‚¬λžŒλ“€μ˜ λ‚˜μ΄μ™€ 이름이 κ°€μž…ν•œ μˆœμ„œλŒ€λ‘œ 주어진닀. μ΄λ•Œ, νšŒμ›λ“€μ„ λ‚˜μ΄κ°€ μ¦κ°€ν•˜λŠ” 순으둜, λ‚˜μ΄κ°€ κ°™μœΌλ©΄ λ¨Όμ € κ°€μž…ν•œ μ‚¬λžŒμ΄ μ•žμ— μ˜€λŠ” μˆœμ„œλ‘œ μ •λ ¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯

첫째 쀄에 온라인 저지 νšŒμ›μ˜ 수 N이 주어진닀. (1 ≤ N ≤ 100,000)

λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” 각 νšŒμ›μ˜ λ‚˜μ΄μ™€ 이름이 곡백으둜 κ΅¬λΆ„λ˜μ–΄ 주어진닀. λ‚˜μ΄λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™μœΌλ©°, 200보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄κ³ , 이름은 μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ 이루어져 있고, 길이가 100보닀 μž‘κ±°λ‚˜ 같은 λ¬Έμžμ—΄μ΄λ‹€. μž…λ ₯은 κ°€μž…ν•œ μˆœμ„œλ‘œ 주어진닀.

 

좜λ ₯

첫째 쀄뢀터 총 N개의 쀄에 걸쳐 온라인 저지 νšŒμ›μ„ λ‚˜μ΄ 순, λ‚˜μ΄κ°€ κ°™μœΌλ©΄ κ°€μž…ν•œ 순으둜 ν•œ 쀄에 ν•œ λͺ…μ”© λ‚˜μ΄μ™€ 이름을 곡백으둜 ꡬ뢄해 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯

3

21 Junkyu

21 Dohyun

20 Sunyoung

 

예제 좜λ ₯ 

20 Sunyoung

21 Junkyu

21 Dohyun


풀이

μž…λ ₯이 κ°€μž…ν•œ μˆœμ„œμ΄κ³ , λ‚˜μ΄κ°€ κ°™μ„λ•Œ κ°€μž…ν•œ μˆœμ„œλŒ€λ‘œ 좜λ ₯ν•΄μ•Ό ν•œλ‹€.

λ‚˜μ΄μ™€ 이름 두가지λ₯Ό μž…λ ₯λ°›μ•„μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 2차원 배열을 μ΄μš©ν•΄ μ €μž₯ν•˜κΈ°λ‘œ ν•œλ‹€.

이전 λ¬Έμ œλ“€κ³Ό 같이 compare() λ©”μ†Œλ“œλ₯Ό μž¬μ •μ˜ ν•΄μ„œ μ •λ ¬ν•œλ‹€.

λ‚˜μ΄λ§Œ λΉ„κ΅ν•˜μ—¬ μ •λ ¬ν•΄μ„œ λ‚˜μ΄κ°€ 같을 λ•Œ μˆœμ„œκ°€ λ°”λ€Œμ§€ μ•Šλ„λ‘ ν•œλ‹€.

import java.io.*;
import java.util.*;

public class B10814 {
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		String[][] member = new String[n][2];

		StringTokenizer st;
		for(int i = 0; i < n; i++) {
			st = new StringTokenizer(br.readLine());
			member[i][0] = st.nextToken();
			member[i][1] = st.nextToken();
		}
		
		Arrays.sort(member, new Comparator<String[]>() {
			@Override
			public int compare(String[] o1, String[] o2) {
				return Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]);
			}
		});
		
		for(int i = 0; i < n; i++) {
			System.out.println(member[i][0] + " " + member[i][1]);
		}
	}
}