[프로그래머스] Level2

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