티스토리 뷰

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
링크
«   2024/11   »
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
글 보관함