ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.