TIL/알고리즘

02/06 알고리즘 공부(34) - 문자열 내림차순으로 배치하기

sos000303 2024. 2. 6. 16:45
728x90

조건

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

알고리즘 예상

  1. string을 배열로 바꾼다.
  2. 배열을 내림차순으로 정렬한다.
  3. 배열을 string으로 바꾼다.

 

초기 코드

class Solution {
    fun solution(s: String): String {
        var answer = ""
        return answer
    }
}

 

내 코드

class Solution {
    fun solution(s: String): String =String(s.toCharArray().sortedDescending().toCharArray())
}

처음에 joinToString을 사용했지만 ", , , , ,"와 같은 결과가 나와 String을 사용했다.

다른 사람의 풀이

class Solution {
    fun solution(s: String): String = String(s.toCharArray().sortedArrayDescending())
}

 

개선점 또는 배운점

  1. sortedDescending().toCharArray()를 할 필요없이 sortedArrayDescending()을 사용하면 됐다.
  2. joinToString이 왜 저렇게 하는지 찾았다. joinToString뒤에 오는 괄호를 잘못 넣어 다르게 작동했다.

 

개선된 코드

class Solution {
    fun solution(s: String): String =s.toCharArray().sortedArrayDescending().joinToString("")
}

 

728x90