프로그래머스 - 정수 내림차순으로 배치하기 [java]

Stella·2021년 12월 1일
0

Coding Test

목록 보기
3/48

문제링크: https://programmers.co.kr/learn/courses/30/lessons/12933

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

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

제한 조건
n은 1이상 8000000000 이하인 자연수입니다.

Solution 1

public long solution(long n) {
        String str = String.valueOf(n); //n을 string으로 
        char[] s = str.toCharArray();// str을 한자리씩 char array에 저장
        Arrays.sort(s);//오름차순
        String sb = new StringBuilder(new String(s)).reverse().toString();
        //내림차순    
        return Long.parseLong(sb);//long type으로 return
    }

primitive arrays은 Arrays.sort()를 통한 내림차순을 할 수 없다.Collections.reverseOrder()를 사용하면 error가 발생한다. Object of Array를 사용하면 Collections.reverseOrder()사용 가능하다. ex) Integer, String
그래서 StringBuilder를 사용하여 내림차순으로 정렬.

Solution 2

public long solution2(long n) {
    String[] list = String.valueOf(n).split("");
    Arrays.sort(list,Collections.reverseOrder());
    StringBuilder sb = new StringBuilder();
    for(String s:list) {
    	sb.append(s);
    }
    return Long.parseLong(sb.toString());
}

String array를 사용하면 Collections.reverseOrder()를 사용해서 정렬 할 수 있다.

Ref:
https://www.geeksforgeeks.org/collections-reverseorder-java-examples/

profile
Hello!

0개의 댓글