알고리즘 CODEKATA 34 (문자열 내림차순으로 배치하기)

오리너구리·2024년 6월 10일
0

CODEKATA

목록 보기
33/57
post-thumbnail

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.

s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

제한 사항

  • str은 길이 1 이상인 문자열입니다.

내 풀이

최종코드

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

풀이 과정

문자열을 정렬해야하는데, 숫자로된 문자열이 아니여도 sorted() 나 sort()가 문자 정렬이가능한지,

아는바가 없어서 검색을 열심히했당

정렬을 하는 여러가지 방법

  1. sorted()

    Immutable List를 정렬할 때 사용

  2. sort()

    Mutable List를 정렬할 때 사용

  3. sortWith(), sortedWith()

    Comparator를 지정해서 정렬 규칙을 지정할 수 있음

  4. sortBy() sortedBy()

    리스트 요소가 여러 데이터 타입을 갖고있을때 어떤 객체를 비교해서 정렬할지 결정

    그리고 String을 sorted로 정렬하면 기본적으로는 문자열의 ASCII 값을 비교한다고함!

    나는 정해진 문자열을 정렬해야하니까 sort말고 sorted를 쓰면되고, 내림차순으로 정렬이니까 Descending을 붙여주면 될 것 같아서 그렇게해봤음!


다른 사람 풀이

class Solution {
    fun solution(s: String): String {
        return s.toCharArray()
            .sortedWith(Comparator { a, b -> b - a })
            .joinToString("")
    }
}

sortedWith 를 써서 Comparator를 사용해주고 joinToString 으로 합쳐준거같은데 정확히 Comparator사용 방식을 모르겠어서 이해가 잘안된당

이거 공부해야할듯..ㅜ


sort() 관련된 함수들을 더 자세하게 따로 공부해보기!

profile
오리너구리입니다

0개의 댓글