프로그래머스/level1

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

wave_m 2020. 10. 28. 09:53
728x90

 

 

문제 설명 : 

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

 

제한 조건 : 

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

입출력 예 :

n return
118372 873211

 

import java.util.*;
class Solution {
    public long solution(long n) {
        char[] input = Long.toString(n).toCharArray();
        Arrays.sort(input);
        long ans = 0;
        for(int i = input.length -1; i>= 0 ; i--){
            ans += input[i] - '0';
            ans *= 10;
        }
        return ans/10;
    }
}

 

알고리즘 풀이 :

1. long 타입 변수n을 Long.toString(n).toCharArray()을 사용해 하나씩 잘라서 char[] 타입 배열 input에 저장

2. Arrays.sort를 사용해서 input을 정렬

3. long 타입으로 반환할 ans를 0으로 초기화하여 선언

4. i를 0이 되기까지 for문을 반복

5. ans에 input[i] - '0'을 함으로서 정수 배열에 문자열 숫자를 넣음

6. ans에 10을 곱해 다음 자리수를 더해줄 수 있게 설정

7. ans/10한 값을 return을 사용하여 반환

- 위 과정을 반복한 ans은 마지막 ans*10 때문에 input이 118372면 8732110이 되므로 ans/10

 

 

 

728x90