Developing Myself Everyday
article thumbnail

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/92341?language=kotlin

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

나의 풀이

자동차 넘버와 얼마나 머물렀는지 시간을 같이 배열에 넣기 위해 MutableMap을 사용하였다.

import java.util.*

class Solution {
    var basicTime = 0
    var basicFee = 0
    var unitTime = 0
    var unitFee = 0
    
    fun solution(fees: IntArray, records: Array<String>): IntArray {
        var answer = mutableMapOf<String, Int>()
        val map = mutableMapOf<String, Int>()
        basicTime = fees[0]
        basicFee = fees[1]
        unitTime = fees[2]
        unitFee = fees[3]
        
        records.map {
            var (time, car, inout) = it.split(" ")
            var (hour, min) = time.split(":")
            var due = hour.toInt() * 60 + min.toInt()
            if(inout == "IN") {
                map[car] = due
            }
            else {
                var duration = due - map[car]!!
                answer[car] = answer.getOrDefault(car, 0) + duration
                map.remove(car)
            }
        }
        
        map.forEach { car, t ->
            val max = 23 * 60 + 59
            var duration = max - t
            answer[car] = answer.getOrDefault(car, 0) + duration
        }
        val result = IntArray(answer.size)
        answer.map { it.key.toInt() }
        answer.map {
            answer[it.key] = calFee(it.value)
        }
        
        
        return answer.toSortedMap(compareBy{it} ).values.toIntArray()
    }
    
    fun calFee(duration: Int) : Int {
        var fee = 0
        if(duration <= basicTime) {
            fee = basicFee
        }
        else {
            var result = (duration - basicTime).toDouble() / unitTime
            fee = basicFee + Math.ceil(result).toInt() * unitFee
        }
        return fee
    }
}

'프로그래머스 - kotlin > LEVEL 2' 카테고리의 다른 글

소수 찾기  (0) 2022.11.29
가장 큰 수  (0) 2022.11.29
모음 사전  (0) 2022.11.25
피로도  (0) 2022.11.24
오픈 채팅방  (0) 2022.11.22
profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!