Algorithm

[Algorithm] 위에서 아래로

씬프 2021. 5. 13. 09:00
반응형

문제

하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오.

 

입력 조건

첫째 줄에 수열에 속한 수의 개수 n 이 주어진다.

둘째 줄부터 수열에 포함된 수 n개가 입력된다.

 

출력 조건

입력으로 주어진 수열이 내림차순으로 정렬된 결과를 출력한다.

 

풀이

입력을 배열로 받고, 배열을 내림차순으로 정렬해 하나씩 출력한다.

import java.util.*;

class Main {

  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    Integer[] list = new Integer[n];
    for(int i = 0; i < n; i++) {
      list[i] = sc.nextInt();
    }
    sc.close();

    Arrays.sort(list, Collections.reverseOrder());

    for (int i = 0; i < n; i++) {
      System.out.printf("%d ", list[i]);
    }
    System.out.println();

  } // end main
}

* Arrays.sort()를 통해 기본적으로 오름차순으로 정렬할 수 있다.

** 내림차순으로 정렬할 때, 기본 타입 (int, float, double, long)의 경우 래퍼클래스를 사용해 배열을 선언하고 sort() 메서드의 두번째 인자값에 Collections.reverseOrder() 메서드를 전달한다. (Comparator)

*** 래퍼클래스를 사용해야 Comparator 사용이 가능하다. Collections.reverseOrder() 말고, 직접 람다식으로 Comparator를 구현해도 된다.

    Arrays.sort(list, (s1, s2) -> s2 - s1);

'Algorithm' 카테고리의 다른 글

[Algorithm] 두 배열의 원소 교체  (0) 2021.05.15
[Algorithm] 성적이 낮은 순서대로 출력하기  (0) 2021.05.14
[Algorithm] 미로 탈출  (0) 2021.05.12
[Algorithm] 음료수 얼려 먹기  (0) 2021.05.11
[Algorithm] 게임 개발  (0) 2021.05.10