본문 바로가기
알고리즘

[Swift 알고리즘] 프로그래머스 - 기능개발

by 코코종 2023. 5. 7.
728x90

안녕하세요 코코종입니다.

이전에 풀었던 문제지만 다시 풀었습니다. 확실히 이전에는 구현에 어려움을 조큼... 겪었는데 조금 연습했다고 익숙해졌나보네요 쿠쿠쿠...

import Foundation

func solution(_ progresses:[Int], _ speeds:[Int]) -> [Int] {
    var answer: [Int] = []
    
    var progresses: [Int] = progresses // queue처럼 사용
    var speeds: [Int] = speeds // queue 처럼 사용
    
    while !progresses.isEmpty {
        for i in 0..<progresses.count {
            progresses[i] += speeds[i]
        }    
        
        var result = 0 // 하루에 배포되는 갯수
        // 100 이상이라면 두개 모드 removeFirst 해주고 result += 1
        while progresses.first ?? 0 >= 100 { 
            progresses.removeFirst()
            speeds.removeFirst()
            result += 1
        }
        
        if result > 0 { answer.append(result) }
        // print("progresses", progresses)
    }
    
    return answer
}

저는 progresses와 speeds를 queue처럼 쓰기위해 var로 한번 다시 선언해줬구요.

모든 기능 개발이 끝나는 시점이기에 isEmpty를 활용해 while문을 구성했습니다.

하루하루 지나서 맨 앞에 있는 기능의 진행도가 100이상이면 배포가 되며 그 뒤에 100인 녀석들의 갯수를 세어서 result에 저장 후 1이상일때만 answer에 append를 해줍니다.

728x90