백준 10814번: 나이순 정렬

문제 링크

두개의 값을 배열 또는 객체를 이용하여 저장 후 첫번째 값만을 비교하여 정렬하면 된다.

자바를 이용한 풀이 1. 2차원 배열

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class BaekJoon10814 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int n = Integer.parseInt(br.readLine());
		String[][] users = new String[n][2];				
		
		for(int i = 0; i < n; i++) {		//2차원 배열로 입력받은 나이와 이름 저장
			StringTokenizer st = new StringTokenizer(br.readLine());
			users[i][0] = st.nextToken();
			users[i][1] = st.nextToken();
		}
		
		Arrays.sort(users, (o1, o2) -> {	
			return Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]); //나이 오름차순 정렬
		});
		
		for(int i = 0; i < n; i++) {
			bw.write(users[i][0] + " " + users[i][1] + "\n");
		}
		
		bw.flush();
		
	}
}

자바를 이용한 풀이 2. 객체 배열

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 BaekJoon10814 {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		int n = Integer.parseInt(br.readLine());
		User[] users = new User[n];					//User 객체 배열 생성
		
		for(int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int age = Integer.parseInt(st.nextToken());
			String name = st.nextToken();
			users[i] = new User(age, name);			//입력받은 정보로 새로운 User 객체를 생성하여 users 배열에 추가
		}
		
		Arrays.sort(users, new Comparator<User>() {	//User 객체의 나이를 오름차순으로 정렬

			@Override
			public int compare(User o1, User o2) {
				return o1.age - o2.age;
			}
		});
		
		for(int i = 0; i < n; i++) {
			sb.append(users[i]);
		}
		
		System.out.print(sb);
	}
	
	public static class User {
		int age;
		String name;
        
		public User(int age, String name) {
			this.age = age;
			this.name = name;
		}
        
		@Override
		public String toString() {
			return age + " " + name + "\n";			//출력할 양식 미리 작성
		}
	}
}

(참고: https://st-lab.tistory.com/113)

좋은 웹페이지 즐겨찾기