문제
내 정답 코드
import Foundation
func solution(_ n:Int, _ m:Int, _ section:[Int]) -> Int {
// n 은 벽에 길이
// m 은 한 번에 칠할 수 있는 길이
// section 은 칠해야 하는 구역
// 가장 먼저 있는 빈 구역 m만큼 칠하고 section에서 삭제
var section = section
var result = 0
// sction의 처음으로 와서 m만큼 숫자를 모두 삭제
// 다시 section 맨 앞으로 돌아와 반복
while(!section.isEmpty) {
let first = section.first!
let last = first+m-1 < n ? first+m-1 : n
(first...last).map {
if !section.isEmpty {
if $0 == section.first! {
section.removeFirst()
}
}
}
result += 1
}
return result
}
#
1. m만큼 칠하면서 section의 인덱스를 모두 지우면 된다.
2. section에 첫번째 수를 가져와 그 수부터 m만큼 칠하면서 setcion에 해당하는 수가 있다면 해당 값을 section에서 제거해준다.
3. 위 과정을 반복하여 section이 빈 배열이 될 때 까지 수행한다.
4. 반복문의 count를 세어 result로 반환한다.
배운 기술
'프로그래머스 (Swift) > lv 1' 카테고리의 다른 글
[lv1] 둘만의 암호 (0) | 2024.06.25 |
---|---|
[lv1] 없는 숫자 더하기 (0) | 2024.06.25 |
[lv1] 과일 장수 (0) | 2024.06.16 |
[lv1] 콜라 문제 (0) | 2024.06.12 |
[lv1] 삼총사 (0) | 2024.06.12 |