본문 바로가기

앱 개발/Algorithm

문자열 정렬하기

<문제 47번>

 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하는 solution을 구하세요. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

 

(solution 1)

class Solution {
    fun solution(strings: Array<String>, n: Int): Array<String> {
        return strings.sortedWith(compareBy({ it[n] }, { it })).toTypedArray()
    }
}

sortedWith - 주어진 배열을 오름차순으로 정렬한다.


compareBy - 두 개의 비교 기준을 정의한다.

{ it[n] }은 각 문자열의 n번째 글자를 기준으로, { it } 은 전체 문자열을 기준으로 정렬한다.  n번째 글자를 기준으로 정렬한 다음에 동일한 n번째 글자를 가진 문자열들은 전체 문자열을 기준으로 정렬한다.

 

toTypedArray() - 정렬된 결과를 다시 배열로 변환한다.

----------------------------------------------------------------------------------------------------------------------------------------------

(solution 2)

class Solution {
    fun solution(strings: Array<String>, n: Int): Array<String> {
        var answer = emptyArray<String>()
        val arr = ArrayList<String>()

        for (i in strings.indices) {
            arr.add("${strings[i][n]}${strings[i]}")
        }
        arr.sort()

        answer = Array(arr.size) { i ->
            arr[i].substring(1, arr[i].length)
        }

        return answer
    }
}

728x90