




코딩테스트 연습 - 덧칠하기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드
def solution(n, m, section):
answer = 0
# 현재 벽상태를 리스트로 표시
board_list = [0]*n
for i in section:
board_list[i-1] = 1
# 앞에서 부터 롤러 길이만큼 칠해주기
while True:
if sum(board_list) == 0:
break
for i in range(len(board_list)):
if board_list[i] == 1:
board_list[i:i+m] = [0]*m
break
# 칠하는 횟수 카운트
answer += 1
# print(answer)
return answer
solution(8, 4, [2,3,6])
시간 초과 오류... 다시 생각해보자

수정 코드
def solution(n, m, section):
answer = 0
# 모든 구역이 칠해질때까지
while section:
# 마지막 칠해지는 구역
max_board = section[0]+m-1
# 페인트 칠해주기
for _ in range(len(section)):
# 마지막 칠해주는 구역보다 크면 break
if section[0] > max_board:
break
section.pop(0)
# 페인트 칠하는 횟수 증감
answer += 1
#print(answer)
return answer
solution(8, 4, [2,3,6])