기능 개발 (Level2)
link - https://programmers.co.kr/learn/courses/30/lessons/42586
1. 문제 파악하기
개발자가 기능을 배포하려고 하는데, 기능은 배포 순서가 정해져있다.
기능의 작업진도와 기능 개발 속도가 주어지면 몇개의 기능을 한번에 배포할수 있는지 순차대로 출력한다
- 입력 :
progresses : 배포 순서대로 작업 진도가 적힌 배열
speeds : 개발 속도 적힌 배열
- 출력 : 각 배포마다 멸개의 기능이 배포되는지 순차로 출력
- 조건 : 배포는 하루에 한번
2. 아이디어
- 현재 배포되어야하는 우선순위가 있는 순서를 pointer 로 저장한다
- pointer가 모든 작업을 돌지 않은 동안
- 종료할 기능(진도가 100 이상인)이 있으면 pointer를 옮기며 현재 일자에 끝낼수있는 기능의 수를 계산한다
- 현재 종료할수있는 기능이 없는경우 하루를 더 지내며 진도 + 개발속도 를 계산한다
- 큐를 사용하는 방법도 가능한데 시간 복잡도가 더 효율적으로 가능할듯 하다.. 근데 아이디어가 늦게떠올라서 그냥 넘어간다
3. 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
class Solution {
fun solution(progresses: IntArray, speeds: IntArray): IntArray {
var answer = MutableList<Int>(0, {0})
var pointer = 0
while (pointer < progresses.size) {
if (progresses[pointer] >= 100) {
//for문돌면서 포인터 옮기기
var countProgresses = 0
for (i in pointer until progresses.size) {
if (progresses[i] >=100) {
countProgresses++
pointer = i
} else {
break
}
}
pointer++
answer.add(countProgresses)
}
// 하루 넘어감
for (index in 0 until progresses.size) {
progresses[index] += speeds[index]
}
}
return answer.toIntArray()
}
}
|
cs |
'Programmers' 카테고리의 다른 글
[Programmers] 소수찾기 - kotlin (0) | 2021.08.18 |
---|---|
[Programmers] 가장 긴 팰린드롬 - kotlin (0) | 2021.08.11 |
[Programmers] 괄호 회전하기 - kotlin (0) | 2021.07.15 |
[Programmers] 카펫 - kotlin (0) | 2021.07.12 |
[Programmers] 타겟 넘버 - kotlin (0) | 2021.07.10 |