백준 10814 - 나이순 정렬

Updated:

Java

10814 번 - 나이순 정렬

문제

접근 방법

정렬 문제이다.

총 2가지 방식으로 풀었다.

  1. Class의 Comparable을 이용
  2. String[] 이용

코드

Comparable

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

public class Main {
	static int n, result;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer stk;
    	n = stoi(br.readLine());

    	List<Info> infoList = new ArrayList<>();

    	Info info;
    	for(int i = 0; i < n; i++) {
    		stk = new StringTokenizer(br.readLine());
    		info = new Info(stoi(stk.nextToken()), stk.nextToken());
    		infoList.add(info);
    	}

    	Collections.sort(infoList);


    	StringBuilder sb = new StringBuilder();
    	for(Info in : infoList) {
    		sb.append(in.age).append(" ").append(in.name).append("\n");
    	}

    	System.out.println(sb.toString());

    	br.close();
	}

	static class Info implements Comparable<Info>{
		int age;
		String name;

		public Info(int age, String name) {
			super();
			this.age = age;
			this.name = name;
		}

		@Override
		public int compareTo(Info o) {
			return Integer.compare(age, o.age);
		}
	}

	static int stoi(String str) {
    	return Integer.parseInt(str);
    }

}

String[][] 배열로 비교

String[][] infoArr = new String[n][3];

for(int i = 0; i < n; i++) {
	stk = new StringTokenizer(br.readLine());
	infoArr[i][0] = stk.nextToken();      // 나이, int
	infoArr[i][1] = stk.nextToken();      // 이름, String
}

Arrays.sort(infoArr, new Comparator<String[]>() {
	@Override
	public int compare(String[] o1, String[] o2) {
		return stoi(o1[0]) - stoi(o2[0]);  // 나이 순으로 비교
	}
});

Class + Array

Info[] infoList = new Info[n];

Info info;
for(int i = 0; i < n; i++) {
	stk = new StringTokenizer(br.readLine());
	info = new Info(stoi(stk.nextToken()), stk.nextToken());
	infoList[i] = info;
}

Arrays.sort(infoList, new Comparator<Info>() {
	@Override
	public int compare(Info o1, Info o2) {
		return Integer.compare(o1.age, o2.age);
	}
});

총평

후기

개선할 점