[프로그래머스 고득점 Kit] 기능개발

김가희·2023년 3월 27일
0

[Stack 1일차] 기능개발

⬇️ 나의 코드 v1 ⬇️(Kotlin)

import kotlin.math.*

class Solution {
    fun solution(progresses: IntArray, speeds: IntArray): IntArray {
        var answer = intArrayOf()
        
        var front = -1
        var count = 0
        
        var days = progresses
            .mapIndexed{ index, it ->
                ceil((100 - it) / speeds[index].toDouble()).toInt()
            }
            .forEach{
                if(front == -1) front = it
                
                if(front >= it) count++
                else if(front < it) {
                    front = it
                    answer += count
                    count = 1
                }
            }
        
        answer += count
        return answer
    }
}

풀이 방식은 남은 작업일수를 계산해서 배포 가능한 날짜바로 뒤에 붙어있는 같거나 작은 수들의 개수를 구했다.

예를들어 [95, 90, 99, 99, 80, 99] / [1, 1, 1, 1, 1, 1]의 경우
남은 작업 일수는 [5, 10, 1, 1, 20, 1] 이다.

맨 앞에 5 바로 뒤에붙어있는 수 10은 5보다 크므로 1개만 배포한다.
10 바로 뒤에 붙어있는 수 [1, 1]들은 10보다 작으므로 3개 배포한다.
그러고 20 뒤에 붙어있는 수 1은 20보다 작으므로 2개 배포한다.

-> 1, 3, 2가 정답이다.

profile
안드로이드 개발자

0개의 댓글