https://www.acmicpc.net/problem/1427
문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
예제 입력 1
2143
예제 출력 1
4321
예제 입력 2
999998999
예제 출력 2
999999998
풀이
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String num = scanner.nextLine();
List<Integer> list = new ArrayList<>();
String[] nums = num.split("");
for(String c : nums){
list.add(Integer.parseInt(c));
}
Collections.sort(list, Collections.reverseOrder());
StringBuilder sb = new StringBuilder();
for(int i : list){
sb.append(i);
}
System.out.println(sb.toString());
}
}
Scanner로 받은 숫자를 내림차순으로 정렬한뒤 다시 출력해주는 문제였다. 우선 정렬을 하기 위해서 각 자릿수를 배열이나 리스트에 저장 후에 정렬해야하므로 문자열로 받은 뒤에 split() 함수를 사용해서 배열에 각 자릿수를 저장해주었다. 그 뒤 각 배열의 원소들을 Integer.parstInt 메소드로 정수형으로 변경후에 생성한 Arraylist에 각각 저장해 주었다. 이 list를 Collections.sort 그 중 reverseOrder()를 사용하여 내림차순으로 정해준 뒤 StringBuilder를 사용하여 정렬된 순서대로 각 원소들을 append 해주어 하나의 문자열로 합쳐주고 출력하여 구현하였다.
'백준 알고리즘(코딩테스트 공부)' 카테고리의 다른 글
| 그룹 단어 체커 (0) | 2024.09.18 |
|---|---|
| 카드1 (1) | 2024.09.18 |
| 영화감독 숌 (1) | 2024.09.18 |
| 단어 나누기 (0) | 2024.09.18 |
| 백준 2751번: 수 정렬하기 2 (C언어) (1) | 2024.02.29 |