티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/161989

 

프로그래머스

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

programmers.co.kr

문제이해

  • 길이가 n미터인 벽이 있다. ⇒ 벽은 가로로 이뤄져있다.
  • 길이가 가로로 m미터인 롤러가 있다.
  • 칠해야할 벽인 section으로 주어진다. 이때 각 세션은 1x1미터 크기다.
  • 안칠해도 될 곳, 이미 칠해져 있는 곳 모두 덧칠이 가능하다.
  • 최소한의 작업 횟수를 구하자.

문제풀이

  • 최대한 롤러가 칠할 수 있는 크기 안쪽으로 section이 많이 들어가야 한다. 그래야 최소 횟수로 작업이 가능하다.
  • 롤러의 시작 인덱스와 끝 인덱스를 구하고 이거 보다 이 사이의 값들을 section에서 제거하면 된다.
  • 한번 반복이 한번 칠한 것!
  • 왼쪽에서 제거가 쉽게되도록 deque 자료구조를 활용했다.
from collections import deque

def solution(n, m, section):
    answer = 0
    section=deque(section)
    while section:
        start, end=section[0], section[0]+m
        while section:
            if start<=section[0]<=end-1:
                section.popleft()
            else:
                break
        answer+=1
        
    return answer
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함