본문 바로가기

개발(합니다)/알고리즘&코테

알고리즘 단계별로 풀어보기 : BOJ-1427(소트인사이드)

반응형

문제(출처)

배열을 정렬하는 것은 쉽다. 

수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.


입력

첫째 줄에 정렬하고자하는 수 N이 주어진다. 

N은 1,000,000,000보다 작거나 같은 자연수이다.


출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.


예제 입력

2143


예제 출력

4321



내 풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Collections;
import java.util.Stack;

public class Main {
// 자리수를 내림 차순으로 정렬한 뒤 출력한다.
    
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int num = Integer.parseInt(br.readLine());
        Stack<Integer> s = new Stack<>();
         
        int temp = 0;
        while(num != 0) {
            temp = num%10;
            num = num/10;
            s.push(temp);
        }
        Integer[] arr = new Integer[s.size()];
        for(int i = 0; i < arr.length; i++) {
            arr[i] = s.pop();
        }
        
        Arrays.sort(arr, Collections.reverseOrder());
        
        for(Integer j : arr) {
            bw.write(String.valueOf(j));
        }
        bw.close();

    }
}


내 풀이 해석

비교적 쉬운 문제였습니다.
String으로 데이터를 받아서 처리 할까 했는데 수를 처리 하기 위해서 나눗셈과 나머지를 이용했습니다.
배열에 크기를 알기 위해서 스택에 입력 받은 값을 하나씩 저장했습니다.
하나씩 스택에서 꺼내어 배열에 저장하고 내림차순 정렬 후 출력합니다.


반응형