✏️ 문제
문제 파악
앞에서 부터 차례대로 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
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 9번 / 지폐 접기 (0) | 2024.10.27 |
---|---|
[Python] [1차] 다트 게임 (3) | 2024.10.27 |
[Python] 추억 점수 (2) | 2024.10.26 |
[Python] 카드 뭉치 (0) | 2024.10.26 |
[Python] 옹알이 (2) (0) | 2024.10.26 |