SW Test/Programmers
[Programmers] Lv2. ํํ(kotlin)
An effort will never betray ๐
2022. 9. 24. 21:13
๋ฐ์ํ
๋ฌธ์
์์
ํ์ด
- ์ ๋ฌธ์ ๋ ๋ฌธ์์ด๋ก ์ฃผ์ด์ง๋ ์ ๋ ฅ๊ฐ์ 2์ค ๋ฆฌ์คํธ๋ก๋ง ๋ณ๊ฒฝํ๋ฉด ์ฌ์ด ๋ฌธ์ ์ ๋๋ค.
- ์ ๋ split์ ํ๋ ๊ธฐ์ค์ "},"๋ก ์ก์๊ณ ์ดํ ๊ฐ ๋ฌธ์์ด์์ '{'์ '}'๋ ๋น ๊ณต๊ฐ์ผ๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
- ํํ์ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ฆฌ์คํธ ๋ด ๋ฆฌ์คํธ ์์ ๊ฐฏ์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ ์์ผ์ผ ์ฌ๋ฐ๋ฅธ ๋ต์ ๊ตฌํ ์ ์์ต๋๋ค.
- ์ดํ ์ค๋ณต์ด ๋์ง ์๋๋ก answer ๋ฆฌ์คํธ์ ๋ํด์ฃผ๋ฉด ๋ฉ๋๋ค. ์ด๋ฅผ ํ๋์ฉ ํด๋ ๋์ง๋ง fold ํจ์์ set์ ํน์ง์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์์ต๋๋ค.
class Solution {
fun solution(s: String): IntArray {
var answer = mutableListOf<Int>()
val list = s.split("},").map{
it.replace('{',' ').replace('}',' ').trim().split(",").map{it.toInt()}.sorted()
}.sortedBy{it.size}
list.forEach{ sublist ->
sublist.forEach{
if(!answer.contains(it)){
answer.add(it)
}
}
}
return answer.toIntArray()
}
}
์ฐธ๊ณ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ kotlin์ ํน์ฑ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ง์ด ์ตํ์ ๐ฝ
- mutableListOf๋ java์ ArrayList๋ฅผ ์์ฑํด์ฃผ๊ณ java์ ArrayList๋ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ๊ฐ๋ฅํ ๋ฐฐ์ด์ ๋๋ค. ์ด๊ธฐ ์ค์ ํ ๋ฐฐ์ด์ capacity๋ณด๋ค ์ถ๊ฐ๋ฅผ ํด์ผํ ๊ฒฝ์ฐ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ๋ ์์ ์ ์๋์ผ๋ก ํด์ฃผ๊ฒ ๋์ด์์ต๋๋ค.
- mutablesetOf๋ java์ LinkedHashSet์ ์์ฑํ์ฌ ํด์ฌํ ์ด๋ธ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ถ๊ฐ์ ์ผ๋ก Double Linked List๋ก ์์๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/fold.html
๋ฐ์ํ