본문 바로가기

Plo Algorithm

프로그래머스 Lv1 정수 내림차순으로 배치하기

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

    class Solution {
        public long solution(long n) {
            long answer = 0;
            String getPara = String.valueOf(n);                //getPara객체에 n을 StringType으로 변환한 후 할당
            String[] strArr = new String[getPara.length()];    //getPara.length 만큼의 배열생성
            strArr = getPara.split("");                        //strArr에 getPara를 한글자씩 쪼게서 할당
            int[] intArr = new int[strArr.length];             //intType의 배열생성

            for (int i = 0 ; i < intArr.length ; i++){         //크기 비교를 위해 intArr에 intType으로 형변환한 strArr할당
                intArr[i] = Integer.parseInt(strArr[i]);
            }
            for(int i = 0 ; i < intArr.length; i++){           //크기를 비교해 역순으로 정렬하는 2중for문.
                for(int j = 0; j < intArr.length; j++){        //j(안쪽 for)는 i(바깥쪽 for)에 의해 두번 반복되기 때문에 j =i+1
                    if (intArr[j] < intArr[i]){                //예시 : if (intArr[1] < intArr[0])
                        int temp = intArr[j];                  //예시 : int temp = intArr[1]
                        intArr[j] = intArr[i];                 //예시 : intArr[1] = intArr[0]
                        intArr[i] = temp;                      //예시 : intArr[0] = intArr[1]로 순환하며 큰 수를 앞으로 작은 수를 뒤로 정렬하는 알고리즘
                    }
                }
            }for (int i = 0; i < intArr.length; i++){          //정렬 후 intArr을 StringTypeArr로 형변환과 동시에 할당.
                strArr[i] =  String.valueOf(intArr[i]);
            }
            getPara = String.join("",strArr);                  //String Type getPara.join("",strArr) getPara에 값이 ""이면 strArr을 할당
            answer = Long.parseLong(getPara);                  //리턴하기 위한 형변환
            return answer;
        }
    }

문제 풀이의 시작을 for문으로 했었다.

중간쯤 정렬에서 문제가생겨 배열의 정렬을 찾아보던 도중에

ArrayList.sort()를 통해서 쉽게 해결할 수 있는 문제인걸 알았지만

끝까지 for문과 형변환으로 해결해보고 싶어 도전했고

아득바득 해결해냈다.