반응형
문제
하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오.
입력 조건
첫째 줄에 수열에 속한 수의 개수 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 |