Kotlin 문법 및 연습 문제

Kotlin - 문자열 내 마음대로 정렬하기

돗개진 2024. 3. 21. 21:08

프로그래머스 - 문자열 내 마음대로 정렬하기

 

문제를 처음 접근할 때 n번째 인덱스의 문자열을 가져와서 순서대로 정렬하는 것까지는 쉬웠지만 그 문자열을 포함한 단어를 가져와서 다시 정렬하는 과정에서 조금 막혔다.

 

class Solution {
    fun solution(strings: Array<String>, n: Int): Array<String> {
        var answer = Array(strings.size) {" "}
        var midVal = Array(strings.size) {" "}
        
        for(i in strings.indices) {
            midVal[i] = strings[i][n].toString()
        }
        
        val sort = midVal.indices.sortedWith(compareBy({midVal[it]}, {strings[it]}))
        for (i in sort.indices) {
            val idx = sort[i]
            answer[i] = strings[idx]
        }
        
        return answer
    }
}

ㄴ> midval에 strings의 n번째 문자열을 담는다. 여기서 사용된 sortedWith()는 정렬하는 방식과 정렬하는 대상을 지정할 수 있기 때문에 매우 유용하다.

 

idx로 해당 인덱스 요소를 가져와 단어 순서대로 다시 출력할 수 있게 구현했다.

 

class Solution {
    fun solution(strings: Array<String>, n: Int): Array<String> {
        return strings.also {
            it.sort()
            it.sortBy { it[n] }
        }
    }
}

ㄴ> 이건 다른 사람 풀이... 볼 때마다 다들 엄청 단순하게 구현하는 것 같다. 저기에 쓰인 also도 뭔지 알아보도록 하자