알고리즘 문제 풀이

백준 1427 소트인사이드 (JAVA 자바)

superbono 2021. 6. 30. 22:51

문제 출처 - https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

입력

첫째 줄에 정렬하고자하는 수 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과 같은 타입에 대해서는 고민할 필요가 없다.