SW Test/Programmers
[Programmers] Lv2. ๋ฉ๋ด ๋ฆฌ๋ด์ผ(kotlin)
An effort will never betray ๐
2022. 9. 9. 11:21
๋ฐ์ํ
๋ฌธ์
์์
ํ์ด
- ํ๋์ ์ฃผ๋ฌธ(order)์์ ๊ตฌ์ฑ๋ ์ ์๋ ๋ฉ๋ด ๊ตฌ์ฑ์ ๋ฐฑํธ๋ํน ๊ธฐ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ ์ต์ 2๊ฐ ์ด์์ ๋ฉ๋ด๊ฐ ๊ตฌ์ฑ๋์ด์ผ ํ๊ธฐ์ ๋ฌธ์์ด์ด 2 ์ดํ์ธ ๊ฒฝ์ฐ๋ ์ ์ธํ๊ณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ก ํํํด์ผํ๊ธฐ์ ๋ฏธ๋ฆฌ ์ ๋ ฌ์ ์ํต๋๋ค.
- ์ดํ course ๋ฅผ ํ๋์ฉ ํ์ํ๋ฉด์ ํด๋น ๊ฐฏ์๋ก ๊ตฌ์ฑ๋ ๋ฉ๋ด ์กฐํฉ ์ค 2๋ฒ ์ด์ ์ฃผ๋ฌธ๋ ๊ฒ ์ค ์ต๋๊ฐ์ ๊ตฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต๋๊ฐ๊ณผ ๋์ผํ ๋ฉ๋ด ๊ตฌ์ฑ์ ๋ชจ๋ answer์ ์ถ๊ฐํ์๋ฉด ๋ฉ๋๋ค.
class Solution {
val csmap = mutableMapOf<String, Int>()
fun getCourseInfo(str: String, idx: Int, s: String){
if(str.length == idx){
if(s.length >= 2){
csmap.put(s, csmap.getOrDefault(s, 0) + 1)
}
}else{
getCourseInfo(str, idx+1, s+str[idx])
getCourseInfo(str, idx+1, s)
}
}
fun solution(orders: Array<String>, course: IntArray): Array<String> {
val answer = mutableListOf<String>()
orders.forEach{
val str = it.toCharArray().sorted().joinToString("")
getCourseInfo(str, 0, "")
}
course.forEach{ cnt ->
val max = csmap.filter{it.key.length == cnt && it.value >= 2}.values.maxOrNull()
max?.let{ max ->
answer.addAll(csmap.filter{it.key.length == cnt}.filter{it.value == max}.keys)
}
}
return answer.sorted().toTypedArray()
}
}
์ฐธ๊ณ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ kotlin์ ํน์ฑ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ง์ด ์ตํ์ ๐ฝ
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/max-or-null.html
๋ฐ์ํ