본문 바로가기

알고리즘

[코딩테스트] Level. 1 문자열 내림차순으로 정렬하기

728x90

 

문제 설명

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

제한 사항
  • str은 길이 1 이상인 문자열입니다.
입출력 예
"Zbcdefg" "gfedcbZ"

 

 

고수님들의 풀이법. 1번. 

val i = s.toCharArray().sorted().reversed().joinToString("")
//joinToString 이란? List 를 String 으로 변환시켜주는 함수 .

 

고수님들의 풀이법. 2번.

var k = ""
for (item in s.toCharArray().sortedDescending()) {
    k += item
}

 

 

나의 풀이법 . 정말 써놓고도 안좋은 코드인 것 같다.

 

private fun solution(s: String): String {
    var l = ""
    var m = ""
    var n = ""
    s.forEach {
        if (it.isLowerCase()) {
            m += it
        } else {
            n += it
        }
    }
    val v = m.toCharArray().sortedDescending().joinToString("")
    val x = n.toCharArray().sortedDescending().joinToString("")

    l = v + x
    return l
}

 

sortedDescending() : 내림차순으로 정렬.

joinToString 이란? List 를 String 으로 변환시켜주는 함수 .

 

앞으로도 이 2가지 함수는 유용하게 사용될 것 같다.