저고데

[프로그래머스]덧칠 하기 본문

프로그래머스

[프로그래머스]덧칠 하기

진철 2023. 3. 14. 20:59
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/161989

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드를 작성하기 위한 순서는 다음과 같다.

1. 벽이 칠해진 부분 1로 그렇지 않은 부분을 0으로 만들어준다.

2. 벽의 끝부분에서 롤러 길이까지를 제외하고 롤러의 길이만큼 색칠해주고 answer+1을 해준다.

3. 나머지 부분에서 칠해지지 않은 부분이 있다면 answer+1을 해준다.

 

def solution(n, m, section):
    answer = 0
    wall = [1 for _ in range(n)]
    rest = []
    for i in section:
        wall[i-1] = 0 #1번
    for i in range(len(wall)-m+1): #2번
        if wall[i] == 0:
            for j in range(m): #롤러의 길이만큼 색칠해주기
                wall[i+j] = 1
            answer += 1
    for i in range(len(wall)-m+1, len(wall)):
        rest.append(wall[i])
    if 0 in rest: #3번
        answer += 1
    return answer

 

이중반복문을 사용하여 해결할 수 있는 문제였다.

하지만 패인트칠을 해야하는 최소 횟수를 구해야하기 때문에 롤러 길이의 마지막 벽 부분은 따로 빼서 0이 하나라도 있으면 그 부분을 전체 통으로 칠해주는 코드로 문제를 해결하였다.

728x90
반응형