(프로그래머/Swift) 페인트 오버

https://school.programmers.co.kr/learn/courses/30/lessons/161989

도색되지 않은 부분(0)과 칠해진 부분(1)을 부울 배열에 별도로 삽입했습니다.
그런 다음 전체 영역을 돌아 다니며 칠하지 않은 부분이 있으면 거기에서 시작하여 m 길이로 칠했습니다.
여기에서 점 i에서 길이 m을 그리는 것이 불가능한 분기점이 있습니다. 즉, i에 칠하면 롤러의 길이가 나머지 부분, 즉 그 위로 넘어가는 부분의 길이보다 길다는 것! 일탈해서는 안 된다고 작업에 명시되어 있고, 배열의 범위 밖에 있기 때문에… 현재 위치가 i+mn을 넘으면 도색되지 않은 부분이 아무리 많아도 한 번만 칠하면 된다. 마지막 셀과 일치합니다. 따라서 이 경우에는 답변 + 1만 입력하면 됩니다.

+ 어떤 분들은 아주 잘 풀었습니다… 깔끔한 정리를 사용하지 않고요.

import Foundation

//section: 칠할 영역
//한번의 페인트칠에 연속된 m개의 구역 칠할 수 있음(m=롤러길이)

func solution(_ n:Int, _ m:Int, _ section:(Int)) -> Int {
    var answer = 0
    var array = (Bool)(repeating: true, count: n+1)
    for i in 0..<section.count { array(section(i)) = false }
    for i in 1...n {
        if i > n-m+1 && !array(i) {
            answer += 1
            break
        }else {
            if !array(i) {
                for j in i..<i+m { array(j) = true }
                answer += 1
            }
        }
    }
    return answer
}

print(solution(8, 4, (2,3,6)))
print(solution(5, 4, (1,3)))
print(solution(4, 1, (1,2,3,4)))