PS/프로그래머스

[Python] 덧칠하기

s_omi 2024. 10. 26. 10:06

✏️ 문제

 

문제 파악

앞에서 부터 차례대로 for 반복문 돌면서 칠해야 하는 구역을 발견했을 때 경우를 두 가지로 나눠야 한다.

룰러가 벽에서 벗어나면 안되므로

  1. 칠해야 하는 구역 + (m-1) <= n - 1 
  2. 칠해야 하는 구역 + (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