Algorithm/programmers

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

마닐라 2021. 12. 2. 17:56

📍 문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.제한 조건

  • n은 1이상 8000000000 이하인 자연수입니다.

입출력 예

return

118372 873211

 

💡 접근

처음에는 long 타입의 배열or리스트를 만들어서 처리해보려 했으나 아스키코드 숫자의 숫자가 들어가서 String으로 변환시켰다.

그러고나서 answer에 더해주는데 String 또 long 타입으로 변환시켜서 더해주다 보니 숫자로 인식해서 아예 String 변수를 하나 만들어서 완성시킨 후 answer에 넣어주는 식으로 풀었음

 

다른 사람은 ""을 기준으로 한 단어마다 배열을 만들어서 해당 배열을 sort 시켜주는 식으로 구현했다..

그러면 [8,7,3,2,1,1] 으로 바로 배열에 담기게 된다!

 

 

👩‍💻 코드

import java.util.*;

class Solution {

    public static long solution(long n) {
        long answer = 0;
        String tmp = "";
        String s = n + "";
        String[] arr = new String[s.length()];
        ArrayList<String> list = new ArrayList<>();

        for(int i = 0; i < arr.length; i++) {
            arr[i] = s.charAt(i) + "";
        }
        for(int i = 0; i < s.length(); i++) {
            list.add(s.charAt(i) + "");
        }

        Arrays.sort(arr, Comparator.reverseOrder());
        Collections.sort(list, Collections.reverseOrder());

        for(int i = 0; i < list.size(); i++) {
            tmp += list.get(i);
        }

        answer = Long.parseLong(tmp);

        return answer;
    }


    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);

        String[] a = {"Jane", "Kim"};
        int n = 1;

        solution(118372);

    }
}
import java.util.*;

class Solution {
  public long solution(long n) {
        String[] list = String.valueOf(n).split("");
        Arrays.sort(list);

        StringBuilder sb = new StringBuilder();
        for (String aList : list) sb.append(aList);

        return Long.parseLong(sb.reverse().toString());
  }
}

'Algorithm > programmers' 카테고리의 다른 글

[2018 카카오 블라인드 1차]비밀지도  (0) 2021.12.04
[2018 카카오 블라인드 1차]다트 게임  (0) 2021.12.03
하샤드 수  (0) 2021.12.03
제일 작은 수 제거하기  (0) 2021.12.02
이상한 문자 만들기  (0) 2021.12.02