본문 바로가기
코딩 테스트/[JAVA] programmers 코딩 테스트 연습

[Programmers/JAVA] 정수 내림차순으로 배치하기 / 프로그래머스 코딩 테스트 연습

by M개발자 2021. 7. 13.
반응형

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

 


문제 설명

 

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


예시

 

n return
118372 873211

코드 해석 및 전체 코드

 

1.long 타입 숫자 String 배열에 하나씩 저장

2. 내림차순으로 정렬

3. 배열 다시 long 타입으로 변환

 

1.long 타입 숫자 String 배열에 하나씩 저장

split은 문자열을 잘라 배열로 저장하는 메소드이므로, 

long 타입인 n을 String 타입으로 변환 후 split 메소드를 사용한다. 

 

2. 내림차순으로 정렬

배열 num은 String 타입이므로 두 수를 비교할 수 없다. 

그래서 배열 값을 다시 long 타입으로 변환 후 두 수를 비교한다. 

 

3. 배열 다시 long 타입으로 변환

내림차순으로 정렬된 배열을 long 타입으로 저장해야하므로, 

먼저 배열을 long 타입으로 변환 후 10의 num.length - i - 1 제곱을 곱하여 더해준다.

 

 

class Solution {
    public long solution(long n) {
        long answer = 0;
        
        String[] num = String.valueOf(n).split("");
        
        for(int i = 0; i < num.length -1; i++){
            for(int j = 0; j < num.length - 1 - i; j++){
                if(Long.valueOf(num[j]) < Long.valueOf(num[j + 1])){
                    String temp = num[j];
                    num[j] = num[j + 1];
                    num[j + 1] = temp;
                }
            }
        }
        for(int i = 0; i < num.length; i++){
            answer += Long.valueOf(num[i]) * (int)(Math.pow(10, num.length - i - 1));
        }
        return answer;
    }
}

github

programmers

 

 

 

반응형

댓글