PS/프로그래머스
[Python] 덧칠하기
s_omi
2024. 10. 26. 10:06
✏️ 문제
문제 파악
앞에서 부터 차례대로 for 반복문 돌면서 칠해야 하는 구역을 발견했을 때 경우를 두 가지로 나눠야 한다.
룰러가 벽에서 벗어나면 안되므로
- 칠해야 하는 구역 + (m-1) <= n - 1
- 칠해야 하는 구역 + (m-1) > n - 1
1번 같은 경우는 룰러의 길이만큼 칠한다.
2번 같은 경우는 칠해야 하는 구역보다 앞에 있는 구역은 다 칠해져 있으므로 해당 구역부터 배열의 끝까지 칠하면 된다.
이때 인덱스 0부터 4까지 1을 대입하는 코드는 다음과 같다.
ary[0:5] = [1] * 5
코드
def solution(n, m, section):
wall = [1] * n
answer = 0
for s in section:
wall[s-1] = 0
for i in range(len(wall)):
if wall[i] == 0:
answer += 1
if i + (m-1) <= len(wall) - 1:
wall[i:i+m] = [1] * m
else:
wall[i:len(wall)] = [1] * (len(wall) - i)
return answer