SW Test/Programmers
[Programmers] Lv2. ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ(kotlin)
An effort will never betray ๐
2022. 10. 22. 17:02
๋ฐ์ํ
๋ฌธ์
์์
ํ์ด
- ๋ ๊ฐ์ map์ ํตํด ํ๋๋ ์ /์ถ์ฐจ ๊ธฐ๋ก๊ณผ ํ๋๋ ํด๋น ์ฐจ๋์ ์ ์ฒด ์๊ฐ์ ๊ธฐ๋กํ์๋ฉด ๋ฉ๋๋ค.
import kotlin.math.*
class Solution {
fun solution(fees: IntArray, records: Array<String>): IntArray {
val score = mutableMapOf<String, Int>()
var map = mutableMapOf<String, Int>()
records.forEach{ record ->
val rl = record.split(" ")
val time = rl.get(0).split(":").let{ it.first().toInt()* 60 + it.last().toInt()}
val num = rl.get(1)
if(map.contains(num)){
score.put(num, (score.get(num)?: 0) + time - map.get(num)!!)
map.remove(num)
}else{
map.put(num, time)
}
}
for(elem in map){
score.put(elem.key, (score.get(elem.key)?: 0) + 60*23 + 59 - elem.value)
}
return score.toSortedMap().map{
if(it.value <=fees.get(0).toInt()){
fees.get(1).toInt()
}else{
fees.get(1).toInt() + ceil((it.value - fees.get(0).toInt())/fees.get(2).toFloat()).toInt()*fees.get(3).toInt()
}
}.toIntArray()
}
}
์ฐธ๊ณ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ kotlin์ ํน์ฑ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ง์ด ์ตํ์ ๐ฝ
- mutableMapOf๋ Java์ LinkedHashMap์ ์์ฑํฉ๋๋ค. LinkedHashMap์ HashMap๊ณผ key์ value๋ฅผ ๊ฐ์ง๊ณ ์๋ ํํ๋ ๋์ผํ๋ ๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅ๋ฐ๊ธฐ ์ํด์ ๋ณ๋์ Double Linked List๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
- https://developer.android.com/reference/java/util/LinkedHashMap
๋ฐ์ํ