https://school.programmers.co.kr/learn/courses/30/lessons/161989
해결
두 개의 포인터로 문제를 해결했습니다.
벽에 칠할 영역이 오름차순으로 정렬되어 있기 때문에
첫 번째 시작은 벽의 가장 왼쪽 값인 섹션(0)이고 끝은 시작 + (m-1)(처음부터 시작하여 롤러로 칠할 수 있는 영역)입니다.
섹션의 값을 한 번에 하나씩 for 문에 전달하십시오.
1) end 미만인 경우 => 이미 칠해졌기 때문에 통과
2) end 보다 큰 경우 => 릴 수는 +1, i 를 기준으로 start 와 end 가 업데이트 됩니다.
2. 내가 작성한 코드
def solution(n, m, section):
start = section(0)
end = start + (m-1)
cnt = 1
for i in section:
if i > end:
cnt+=1
start = 1
end = i + (m-1)
return cnt
3. 리팩토링
start라는 변수 없이 end 값만으로 문제를 풀 수 있습니다.
def solution(n, m, section):
paint = section(0) + (m-1)
cnt = 1
for i in section:
if i > paint:
cnt+=1
paint = i + (m-1)
return cnt