본문 바로가기

개발/알고리즘

[프로그래머스] 스택/큐 - 기능개발

반응형
 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

입력 & 출력

각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.

풀이

스택 / 큐를 이용해 푸는 문제인데 다른 방식으로 푼 것 같다.. (언젠가 스택으로 풀겠지)

[93, 30, 55] [1, 30 ,5] => [7, 3, 9] => [2, 1]
[93, 90, 99, 99, 80, 99] [1,1,1,1,1,1] => [7, 10, 1, 1, 20, 1] => [1, 3, 2]

프로세스에 걸리는 날을 구해보자
progressess[i] + n * speed[i] >= 100
n = (100 - progressess[i]) / speeds[i]

위 식에서 나머지가 생길 경우, 작업이 더 필요하니 1을 더해주자

 

Swift 전체 코드

var result : [Int] = []
var (count, max) = (1, 0)

for i in 0..<progresses.count {
    let caculate = (100 - progresses[i]) / speeds[i]
    let n = (100 - progresses[i]) % speeds[i] != 0 ? caculate + 1 : caculate
    
    if i == 0 {
        max = n
    } else {
        if max >= n {
            count += 1
        } else {
            max = n
            result.append(count)
            count = 1
        }
    }
}
result.append(count)

return result

 

반응형