본문 바로가기
프로그래머스 Algorithm

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

by Echung 2023. 11. 13.

안녕하세요. 이번에는 프로그래머스 정수 내림차순으로 배치하기를 풀어보려고 합니다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


Problem

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

 

[제한 사항]

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

사진 1. 입출력 예

Solution

class Solution {
    fun solution(n: Long): Long {
        var answer: String = ""

        var str = n.toString().split("").toMutableList();

        str.sort()

        for(i in str.size - 1 downTo 0) {
            if(!str[i].equals("")) {
                answer += str[i]
            }
        }

        return answer.toLong()
    }
}

 이번 문제는 n을 split 한 List로 만들어 준 후 list를 sort()를 사용해서 오름차순 정렬하였다.

그리고 오름차순 정렬한 list를 끝에서 내려오면 내림차순으로 되기 때문에 downTo를 사용해서 answer에 저장하였다.

마지막으로 String으로 되어있는 answer을 toLong()을 사용해서 long 타입으로 출력하면 된다.

 

1. 다른 사람 코드

class Solution {
    fun solution(n: Long): Long = String(n.toString().toCharArray().sortedArrayDescending()).toLong()
}

  나의 코드와 다르게 한줄로 코드를 작성한 분이 있어서 공부용으로 첨부해 본다. n을 String으로 만든 후 toCharArray()로 배열을 만들었다.

그리고 sortedArrayDescending()을 사용해서 내림차순 정렬을 하고 마지막으로 toLong()으로 long타입으로 출력해 준 코드이다.

내가 작성한 코드보다 뭔가 가독성이 더 좋아진거 같아서 나중에 이런 식으로도 코드를 짜도록 생각해 봐야겠다.


Performance

1. 내가 작성한 코드 2. 다른 사람 코드

 두 코드는 같은 시간 복잡도를 갖는 코드인데 다른 사람의 코드가 코드가 더 간결해서 가독성도 좋고 중간에 가변 리스트를 만들지 않아 좀 더 빠른 것 같다.

반응형