언어
덧칠하기
땅호720
2023. 12. 20. 13:18
def solution(n, m, section):
# section: 다시 칠해야 하는 영역
# m: 칠해지는 연속 구간 (롤러 길이) -> 한 번의 페인트칠
# ex) 6-3+1 = 4 (연속 구간) => 2 (시작 구역) + 4(연속 구간) -1 = 끝나는 구역
# 어차피 n // m 번 해야함
# section 길이가 m보다 길면 필수
# section의 최대 최소 구역 비교하여 m을 커버할 수 있는지..?
# max(section) > min(section) + m - 1
answer = 0
if m==1:
answer = len(section)
else:
while section:
limit = min(section) + m - 1
idx = max([idx for idx, s in enumerate(section) if s <= limit])
section = section[idx+1:]
answer += 1
return answer
한 번에 칠할 수 있는 구역 m이 1이면 section만큼 해야하므로, 따로 연산 없이 section의 길이를 반환하는 케이스를 분리해주는 게 좋다