<문제 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
'앱 개발 > Algorithm' 카테고리의 다른 글
Array, Set (두 개 뽑아서 더하기) (0) | 2024.03.11 |
---|---|
Destructuring declarations (K번째수) (0) | 2024.03.08 |
mapIndexed (이상한 문자 만들기) (0) | 2024.02.22 |
행렬의 덧셈 (0) | 2024.02.20 |
=, == (가운데 글자 가져오기) (0) | 2024.02.16 |