[백준] 10818 최소, 최대

해니·2024년 5월 22일
0

Java

목록 보기
17/34



import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String nString = br.readLine();
        String[] inputStringArr = br.readLine().split(" ");
        
        ArrayList<Integer> numberList = new ArrayList<>();
        for(String inputString :inputStringArr){
            numberList.add(Integer.parseInt(inputString));
        }
        Collections.sort(numberList);
        System.out.println(numberList.get(0)+" "+numberList.get(Integer.parseInt(nString)-1));
    }
}



Java 정렬 방법


Collections.sort()

Collections.sort(List<T> list)

  • 기본 정렬 기준으로 정렬한다. (오름차순)

Collections.sort(List<T> list, Comparator<? super T> c)

  • Comparator 인터페이스를 구현한 인스턴스에서 지정한대로 정렬한다.


Comparator 인터페이스

  • 하나의 public abstract 메서드를 구현해야 하는 함수형 인터페이스
  • 타입이 같은 객체 2개를 매개변수로 전달받아 크기 비교를 수행하는 추상메서드인 compare()를 구현하도록 강제하고 있다.
    • 두 객체 중 만약 앞의 객체가 더 작다면 음수, 같다면 0, 크다면 양수를 반환해야 한다.
@FunctionalInterface
public interface Comparator<T> {

    int compare(T o1, T o2);
}

익명 객체 사용

  • 정렬을 위해 사용되는 Comparator 구현체는 보통 한 번만 사용되는 경우가 매우 많은데, 이렇게 1회만 사용되는 인스턴스의 경우 익명 클래스를 통해 처리하는 것이 좋다.
Collections.sort(myBookList, new Comparator<Book>() {
   @Override
   public int compare(Book o1, Book o2) {
       return o2.getPrice()-o1.getPrice();  // o2가 앞에 있으면 내림차순.
  }
});

람다식을 사용한 간결화

members.sort((m1, m2) -> 
    m1.getName().equals(m2.getName()) ?
        m1.getAge() - m2.getAge() :
        m1.getName().compareTo(m2.getName()));



Arrays.sort()는 최악의 경우 시간복잡도는 O(n2)이기 때문에, O(nlog(n))의 시간복잡도를 갖는 Collections.sort()가 더 빠르다.




출처
Arrays.sort()와 Collections.sort()
[JAVA] 리스트(List) 정렬: Collections.sort() 코드를 뜯어보았다, Comparable
[JAVA] Array.sort 와 Collections.sort 의 차이
자바의 Comparator 과 Comparable 인터페이스
[Java] Comparator 구현부터 디폴트 메서드까지 활용해 정렬하기
Comparator와 Comparable의 차이 + 람다표현식

profile
💻 ⚾️ 🐻

0개의 댓글