문제 설명 및 제한사항
아이디어 및 해결 방법
코드
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
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges