기타/프로그래머스 문제

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

wooweee 2023. 10. 15. 15:26
728x90

1. 문제

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

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

입출력 예

n return
118372 873211

 

2. 내 풀이

import java.util.*;

class Solution {
    public long solution(long n) {
        long answer = 0;
        if (n < 1 || n > 8000000000L) return -99999L;
        List<Long> list = new ArrayList<>();

        while (n != 0) {
            list.add(n % 10);
            n /= 10;
        }
        Collections.sort(list, Collections.reverseOrder());
        
        Iterator<Long> iterator = list.iterator();
        while (iterator.hasNext()) {
            answer = answer * 10 + iterator.next();
        }
        return answer;
    }
}

 

3. 다른 사람 풀이

public class ReverseInt {
    String res = "";
    public int reverseInt(int n){
        res = "";
        Integer.toString(n).chars().sorted().forEach(c -> res = Character.valueOf((char)c) + res);
        return Integer.parseInt(res);
    }

    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void  main(String[] args){
        ReverseInt ri = new ReverseInt();
        System.out.println(ri.reverseInt(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());
  }
}