-
10814번 - 나이순 정렬알고리즘/백준 2023. 6. 6. 12:37
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static class User implements Comparable<User> { int age; String name; User(int age, String name) { this.age = age; this.name = name; } @Override public int compareTo(User user) { return this.age - user.age; } } 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()); StringTokenizer st; ArrayList<User> list = new ArrayList<>(); for(int i=0;i<N;i++) { st = new StringTokenizer(br.readLine()); list.add(new User(Integer.parseInt(st.nextToken()), st.nextToken())); } list.sort(null); for(User user:list) { sb.append(user.age+" "+user.name+"\n"); } System.out.println(sb); br.close(); } }
자바의 클래스와 ArrayList의 정렬 기능을 이용해 해결했습니다.
User 클래스를 생성해서 Comparable 인터페이스를 implement하면 ArrayList의 sort 기능으로 원하는 조건으로 정렬시킬 수 있습니다. 이 조건은 compareTo 메서드를 통해 구현합니다. compareTo메서드를 따로 실행할 필요 없이 sort를 하면 자동으로 compareTo메서드를 써서 음수면 앞으로, 양수면 뒤로 가는 식으로 정렬합니다.
정렬 이후에는 결과를 StringBuilder를 써서 하나의 문자열로 만들어 한 번에 출력해서 시간복잡도를 줄였습니다.
'알고리즘 > 백준' 카테고리의 다른 글
10828번 - 스택 (2) 2023.06.06 10816번 - 숫자 카드 2 (1) 2023.06.06 10773번 - 제로 (0) 2023.06.06 9012번 - 괄호 (0) 2023.06.04 7568번 - 덩치 (0) 2023.06.04