문제 출처 - https://www.acmicpc.net/problem/1427
문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
문제 유형
문자열 , 정렬
코드
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class BJ1427_소트인사이드 {
static int N, res;
static ArrayList<Integer> list;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
list = new ArrayList<>();
while(N > 0) {
list.add(N % 10);
N /= 10;
}
Collections.sort(list);
for (int i = list.size() - 1; i > - 1; i-- ) {
res *= 10;
res += list.get(i);
}
System.out.println(res);
}
}
while문을 돌면서 숫자를 자릿수대로 잘라서 arraylist인 list에 넣어준다. 그 뒤, sort 함수를 써서 오름차순으로 정렬해준다. 그리고 내림차순으로 수를 출력하라고 했으니까 배열의 0번째 원소부터가 아닌 list.size() -1 부터 더하면서 10을 곱해줘서 자릿수를 높인다. 어차피 int 자료형 안의 수만 입력 되기 때문에 long과 같은 타입에 대해서는 고민할 필요가 없다.
'알고리즘 문제 풀이' 카테고리의 다른 글
정올 4189 장기2 (JAVA 자바) (0) | 2021.07.04 |
---|---|
정올 1695 단지번호붙이기 (JAVA 자바) (0) | 2021.07.03 |
정올 2809 약수 (JAVA 자바) (0) | 2021.06.27 |
정올 1146 선택 정렬(JAVA 자바) (0) | 2021.06.26 |
정올 1516 단어 세기 (JAVA 자바) (0) | 2021.06.21 |