백준 sort 정렬 문제

정호윤·2023년 3월 18일

자바

목록 보기
38/46

백준문제링크

Buffer builder 이차원 배열 사용한 코드

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

public class Main {
	
	public static void main(String args[]) throws IOException {
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       StringBuilder sb = new StringBuilder();
       int N = Integer.parseInt(br.readLine());
       String[][] str = new String[N][2];
       for(int i=0;i<N;i++){
        String str2 = br.readLine();
        StringTokenizer st = new StringTokenizer(str2," ");
        str[i][0]  =st.nextToken();
        str[i][1]=st.nextToken();
       }
    Arrays.sort(str,(e1,e2)->{
        return Integer.parseInt(e1[0])-Integer.parseInt(e2[0]);
    });

    for(int i=0;i<N;i++){
       sb.append(str[i][0]+" "+str[i][1]+"\n");
    }
    System.out.print(sb);
    }
}

클래스를 하나 만들어서 작성한 코드

import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
 
public class Main {
	public static void main(String[] args) {		
 
		Scanner in = new Scanner(System.in);
		
		int N = in.nextInt();
        
		Person[] p = new Person[N];
		
 
		for(int i = 0; i < N; i++) {
			p[i] = new Person(in.nextInt(), in.next());
		}
 
		
		// 타입을 Person 으로 둘 것.
		Arrays.sort(p, new Comparator<Person>() {
			// 나이순으로 정렬
			@Override
			public int compare(Person s1, Person s2) {
				return s1.age - s2.age;
			}
			
		});
 
		StringBuilder sb = new StringBuilder();
		
		for(int i = 0; i < N; i++) {
			// 객체배열의 객체를 출력하면 해당 인덱스의 객체의 toString() 이 출력 됨
			sb.append(p[i]);
		}
        
		System.out.println(sb);
		
	}
    
	public static class Person {
		int age;
		String name;
        
		public Person(int age, String name) {
			this.age = age;
			this.name = name;
		}
        
		@Override
		public String toString() {
			return age + " " + name + "\n";
		}
	}
 
}
profile
개발자로 취직을 희망합니다.

0개의 댓글