본문 바로가기
프로그래머스/Python

[프로그래머스] 덧칠하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 2.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 현재 벽의 상태를 저장할 변수를 만들고 True로 초기화한다. result = [True] * n
  2. 칠해야 하는 구역의 번호를 하나씩 추출하여 for i in section
  3. 해당 구역을 칠하지 않은 것으로 변경한다. result[i - 1] = False
  4. 칠해야 하는 구역의 번호를 하나씩 추출하여 for i in section
  5. 만약 해당 구역이 아직 칠해지지 않았다면 if (not result[i - 1])
  6. 칠해야 하므로 칠하는 횟수를 1 증가시킨다. answer += 1
  7. 그리고 칠해야 하는 구역의 시작부터 롤러의 길이만큼 한 번에 칠해야 하므로 칠해지는 구역을 하나씩 추출하여 벽을 칠하는데 for j in range(i - 1, i + m - 1)
  8. 만약 구역 번호가 벽을 넘어가면 if (j >= n)
  9. 더 이상 칠할 벽이 없으므로 종료한다. break
  10. 칠할 수 있으면 해당 구역을 칠한다. result[j] = True
반응형

3. 소스코드

def solution(n, m, section):
    answer = 0
    
    result = [True] * n
    for i in section:
        result[i - 1] = False
    
    for i in section:
        if (not result[i - 1]):
            answer += 1
            for j in range(i - 1, i + m - 1):
                if (j >= n):
                    break
                result[j] = True
            
    return answer
728x90
반응형