title: "[프로그래머스] 할인 행사 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/131127"
description: "프로그래머스 Level 2 문제 [할인 행사]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

from collections import Counter

def solution(want, number, discount):
    answer = 0
    targetcnt = Counter({item:cnt for item, cnt in zip(want, number)})

    # 처음 열흘을 우선 판단해봅니다.
    currcnt = Counter(discount[:10])
    if targetcnt == currcnt:
        answer += 1
    # 하루씩 늘려가면서, i일째의 항목을 1개 추가하되 i-10일째의 항목을 1개 빼고 판단합니다.
    for i in range(10, len(discount)):
        currcnt[discount[i]] += 1
        currcnt[discount[i-10]] -= 1
        # 주의) 뺀 항목이 0개가 되면 그 항목을 카운터에서 제거해주어야 합니다.
        if currcnt[discount[i-10]] == 0:
            currcnt.pop(discount[i-10])

        if targetcnt == currcnt:
            answer += 1
            
    return answer

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges