2024. 3. 25. 10:00, ๐กAlgorithm
๋ฐ์ํ
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/12917
์ ๊ทผ
- ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๋ถ๋ฆฌ (์์คํค ์ฝ๋ ์ด์ฉํ๋ฉด ๋์ง ์์๊น ๋๊ฐ ์๊ฐ)
- ์๋ฌธ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๊ฒ๊ณผ, ๋๋ฌธ์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๊ฒ์ ํฉ์น๊ณ ๋ฆฌํด
- ์์ ๊ฐ์ด ์๊ฐํ๋๋ฐ ๋ฌธ์ ์์ ์ํ๋ ์์ ๋ฆฌํด ๊ฐ์ด ๋ด ์๊ฐ๊ณผ ์ข ๋ฌ๋๋ค.
์ฑ๊ณต ์ฝ๋
class Solution {
fun solution(s: String): String
= s.toCharArray().sortedDescending().joinToString("")
}
์ค๋ช
- ๋๋ฌธ์๋ ์๋ ์๋ฌธ์๋ณด๋ค ๊ฐ์ด ์์์ ์ถ๊ฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ์ง ์๋ค.
- ์ฃผ์ด์ง String์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์ดํ๊ณ , ๋ค์ String์ผ๋ก ์ด์ด์ฃผ๋ฉด ๋์ด๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ
class Solution {
fun solution(s: String): String = String(s.toCharArray().sortedArrayDescending())
}
- joinToString("")์ ์ด์ฉํ์ง ์๊ณ , ์ ์ด์ ์ฒ์๋ถํฐ String()์ ์ด์ฉํ ํ์์ด๋ค.
class Solution {
fun solution(s: String): String {
return s.toCharArray()
.sortedWith(Comparator { a, b -> b - a })
.joinToString("")
}
}
- sortedWith()์ ์ด์ฉํ ํ์์ด๋ค.
- sortedWith(Comparator { a, b -> b - a }): ๋ฌธ์ ๋ฐฐ์ด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
sortedWith() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๋น๊ต์(Comparator)์ ๋ฐ๋ผ ์ ๋ ฌ์ ์ํ
b - a๋ ๋ ์์๋ฅผ ๋น๊ตํ์ฌ b๊ฐ a๋ณด๋ค ํฌ๋ฉด ์์๋ฅผ, ์์ผ๋ฉด ์์๋ฅผ, ๊ฐ์ผ๋ฉด 0์ ๋ฐํ
๐กsortedWith()
fun <T> Iterable<T>.sortedWith(comparator: Comparator<in T>): List<T>
- ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๋น๊ต์(Comparator)์ ๋ฐ๋ผ ์ปฌ๋ ์ ์ ์ ๋ ฌ
- ์ ๋ ฌ๋ ์๋ก์ด ์ปฌ๋ ์ ์ ๋ฐํํ๋ฉฐ, ์๋ณธ ์ปฌ๋ ์ ์ ๋ณ๊ฒฝํ์ง ์์
- comparator: ์ ๋ ฌ์ ์ฌ์ฉ๋ ๋น๊ต์
Comparator ์ธํฐํ์ด์ค์ compare() ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ๋ ์์๋ฅผ ๋น๊ต
val list = listOf(3, 1, 4, 1, 5, 9)
val sortedList = list.sortedWith(Comparator { a, b -> b - a })
println(sortedList) // ์ถ๋ ฅ: [9, 5, 4, 3, 1, 1], ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
val numbers = listOf(5, 3, 8, 2, 7)
val sortedNumbers = numbers.sortedWith(Comparator { a, b -> b.compareTo(a) })
println(sortedNumbers) // ์ถ๋ ฅ: [8, 7, 5, 3, 2]
val words = listOf("apple", "banana", "orange", "kiwi")
val sortedWords = words.sortedWith(compareBy { it.length })
println(sortedWords) // ์ถ๋ ฅ: [kiwi, apple, banana, orange], ๋ฌธ์ ๊ธธ์ด์ ๋ฐ๋ฅธ ์ ๋ ฌ
data class Person(val name: String, val age: Int)
val people = listOf(Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35))
val sortedPeople = people.sortedWith(compareBy<Person> { it.age }.thenBy { it.name })
println(sortedPeople)
// ์ถ๋ ฅ: [Person(name=Bob, age=25), Person(name=Alice, age=30), Person(name=Charlie, age=35)]
๋ฐ์ํ
๐ฌ C O M M E N T