반응형
https://programmers.co.kr/learn/courses/30/lessons/42586?language=kotlin
풀이
다음의 규칙을 따라 코드를 작성해봅시다.
- `(100 - 현재 진행률) / 진행 속도`로 남은 기간을 계산합니다. (소수점이 생길 경우 올림)
- 첫 번째 남은 일을 스택에 집어넣습니다. 이때 (남은 기간, counter) 형식으로 집어넣습니다.
- 남은 기간을 순회하며 stack top과 비교하여 남은 기간이 더 작은 경우 counter를 1 증가시키고, stack top이 더 작은 경우 stack에 요소를 추가합니다.
- stack에서 두 번째 요소만 남겨 정해진 형식으로 반환합니다.
import java.util.Stack
class Solution {
fun solution(progresses: IntArray, speeds: IntArray): IntArray {
val days = progresses.zip(speeds).map { (p, s) ->
val left = 100 - p
val div = left / s
val mod = if (left % s > 0) 1 else 0
div + mod
}
val stack = Stack<Pair<Int, Int>>()
stack.add(Pair(days.first(), 1))
for (day in days.drop(1)) {
if (day <= stack.peek().first) {
val (a, b) = stack[stack.size-1]
stack[stack.size-1] = Pair(a, b+1)
}
else {
stack.add(Pair(day, 1))
}
}
return stack.map { it.second }.toIntArray()
}
}
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 프린터 #코틀린 #kotlin #큐 #queue #level2 (0) | 2021.06.02 |
---|---|
[프로그래머스] 위장 #코틀린 #kotlin #hash #level2 (0) | 2021.06.01 |
[프로그래머스] 베스트앨범 #코틀린 #kotlin #hash #level3 (1) | 2021.06.01 |
[프로그래머스] 순위 #파이썬 #그래프 #Floyd-Warshall #Level3 (2) | 2021.05.24 |
[프로그래머스] 숫자 게임 #파이썬 #정렬 #Greedy [Summer/Winter Coding(~2018)] (0) | 2021.05.22 |