Algorithm
[프로그래머스] 덧칠하기
쑤야.
2024. 3. 21. 09:14
https://school.programmers.co.kr/learn/courses/30/lessons/161989?language=swift
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근
실패
- 덧칠해야 하는 가장 왼쪽 블록과 가장 오른쪽 블록에 대한 정보를 저장해 m만큼 왼쪽 블록을 갱신하면서 덧칠 수행
- 인덱스에 대한 정보를 저장하기 때문에, 중간에 덧칠이 필요없는 구간에 대해서도 카운팅이 될 수 있음 → 반례
func solution(_ n:Int, _ m:Int, _ section:[Int]) -> Int {
var answer = 0
var range = (section.min()!, section.max()!)
while range.0 <= range.1 {
answer += 1
range.0 = range.0+m
}
return answer
}
성공
- 이전 구간에 대한 정보를 저장하고, section에 대해 반복문을 수행
- 이전에 점검한 블록과 구간에 속한 경우는 카운팅하지 않고, 속하지 않은 경우에만 카운팅
코드
func solution(_ n:Int, _ m:Int, _ section:[Int]) -> Int {
var answer = 1
var pre = section.min()!
for i in section {
if i-pre >= m {
answer += 1
pre = i
}
}
return answer
}