본문 바로가기
Algorithm/PROGRAMMERS[Java]

Lv1. 정수 내림차순으로 배치하기

by 씨니 2022. 4. 16.
728x90

▶ 문제

 

▶ 풀이방법.

정말 간단한 문제인데 복잡하게 풀 생각을 한 나는 진짜 바보인가,,,ㅜㅜㅜㅜㅜ

Arrays.sort()를 해결하면 간단하게 해결될 문제인데,,,ㅜ

 

- 첫번째로 풀이한 방법

class Solution {
    public long solution(long n) {
        String num = String.valueOf(n);
        int[] arr = new int[num.length()];
        for(int i = 0; i < num.length(); i++) arr[i] = Integer.parseInt(num.substring(i,i+1));
       
        long answer = 0;
        int c = 0;
        String str = ""; //결과값 담기위한 공간
        while(c < num.length()){
            int max = 0; //최대값 저장.
            int index = 0; //max를 담고 있는 공간 0으로 초기화하기 위해 index값 받기위함.
            for(int i = 0;  i < num.length(); i++){
                if(max < arr[i]){
                    max = arr[i];
                    index = i;
                }
            }
            str += String.valueOf(max);
            arr[index] = 0; //max값 들어가있는 arr배열위치 0으로 초기화
            c++;
        }
        answer = Long.valueOf(str);
        return answer;
    }
}

↑정말 바보같은 풀이,,,,ㅜ

 

- Arrays.sort()사용.

++Arrays.sort()사용을 위한 패키지 잘 선언해주기!!

import java.util.*;
class Solution {
    public long solution(long n) {
        String num = String.valueOf(n);
        int[] arr = new int[num.length()];
        for(int i = 0; i < num.length(); i++) arr[i] = Integer.parseInt(num.substring(i,i+1));
        Arrays.sort(arr); //배열 오름차순 정렬
        
        long answer = 0;
        String str = "";
        for(int i = num.length()-1; i >= 0 ; i--) str += arr[i]; //역으로 저장
        
        answer = Long.valueOf(str); //long타입으로 변경
        return answer;
    }
}

 

- Arrays.sort() + StringBuilder()사용.

import java.util.*;
class Solution {
    public long solution(long n) {
        String num = String.valueOf(n);
        int[] arr = new int[num.length()];
        for(int i = 0; i < num.length(); i++) arr[i] = Integer.parseInt(num.substring(i,i+1));
        Arrays.sort(arr);
        
        long answer = 0;
        
        StringBuilder sb = new StringBuilder(); //StringBuilder()사용.
        for(int a : arr) sb.append(a);
 
        answer = Long.valueOf(sb.reverse().toString()); //StringBuilder뒤집기 : reverse().toString()
        return answer;
    }
}
728x90