잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 정수 내림차순으로 배치하기

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

programmers.co.kr

 

 

 

 

 

class Solution {
    fun solution(n: Long): Long {
        var arr = LongArray(n.toString().length);
        var num = n;
        var index = 0;
        do {
            arr[index] = num % 10;
            num /= 10;
            index++;
        } while (num > 0);
        
        arr.sortDescending();
        
        var answer = 0L;
        
        for (i in 0..arr.size - 1) {
            answer = answer * 10 + arr[i];    
        }
        return answer;
    }
}

 

테스트 1 통과 (13.54ms, 66.6MB)
테스트 2 통과 (13.73ms, 64.9MB)
테스트 3 통과 (13.72ms, 65.5MB)
테스트 4 통과 (13.72ms, 64.8MB)
테스트 5 통과 (13.82ms, 65.1MB)
테스트 6 통과 (14.28ms, 64.8MB)
테스트 7 통과 (13.66ms, 65.1MB)
테스트 8 통과 (13.83ms, 64.9MB)
테스트 9 통과 (13.59ms, 65.2MB)
테스트 10 통과 (13.67ms, 65.3MB)
테스트 11 통과 (20.77ms, 65.5MB)
테스트 12 통과 (13.62ms, 65.4MB)
테스트 13 통과 (13.84ms, 66.1MB)
테스트 14 통과 (13.74ms, 65.3MB)
테스트 15 통과 (13.74ms, 65.7MB)
테스트 16 통과 (14.01ms, 64.6MB)

 

 

 

 

 

배열 하나 넣고, 10으로 나누면서 나머지 넣기

그리고 나서 내림차순 정렬 후 다시 10씩 곱하면서 배열 값들 하나씩 추가해서 만들었는데

생각보다 코드도 길고, 시간도 많이 걸리는 것 같아서 다른 방법을 생각해봤다.

 

 

 

 

class Solution {
    fun solution(n: Long): Long {
        var arr = n.toString().toCharArray();
        arr.sortDescending();
        return arr.joinToString("").toLong();
    }
}

 

테스트 1 통과 (13.30ms, 65MB)
테스트 2 통과 (13.98ms, 65MB)
테스트 3 통과 (13.76ms, 65.3MB)
테스트 4 통과 (13.53ms, 65.2MB)
테스트 5 통과 (13.48ms, 66.4MB)
테스트 6 통과 (13.61ms, 65MB)
테스트 7 통과 (13.52ms, 65.1MB)
테스트 8 통과 (13.26ms, 64.9MB)
테스트 9 통과 (20.50ms, 64.5MB)
테스트 10 통과 (15.66ms, 65.7MB)
테스트 11 통과 (18.56ms, 64.8MB)
테스트 12 통과 (13.83ms, 65.4MB)
테스트 13 통과 (15.75ms, 65.3MB)
테스트 14 통과 (13.35ms, 65.3MB)
테스트 15 통과 (14.27ms, 64.5MB)
테스트 16 통과 (14.05ms, 65.2MB)

 

 

 

 

 

이번에는 char배열로 만들어서 내림차순 정렬 후 그대로 String으로 합친 것을 Long형으로 바꾸는 것으로 했는데

이것도 시간복잡도는 비슷해서 의아함

그래도 새로운 방법을 찾은걸로 만족..

 

 

 

 

728x90

+ Recent posts