문제
풀이
자료구조 해쉬(딕셔너리)와 모듈 collections의 Counter을 활용하여 간단히 해결할 수 있다.
Counter 참조
해쉬 참조
딕셔너리 자료구조를 하나 생성하여 정현이가 원하는 품목을 key로 수량을 value로 생성한다.
discount 날짜는 정현이가 원하는 최소 품목 날짜 10 이상이므로, discount 10이면 1번을 11이면 2번, 12면 3번...이런식으로 비교할 수 있도록 날짜 범위를 10으로 지정하여 슬라이링 윈도우 방식으로 반복문을 통해 비교하도록 한다.
비교하여 품목과 수량이 일치하면 일수를 1씩 올려주고 반환하도록 한다.
Counter 함수는 value 값을 기준으로 내림차순으로 정렬하기 때문에 비교 가능하다.
코드
from collections import Counter
def solution(want, number, discount):
n = len(discount) - 9 # discount의 반복 횟수
m = len(want)
answer = 0
dH = {} # 딕셔너리 자료구조 생성
for i in range(m): # 정현이가 원하는 품목과 수량 생성
dH[want[i]] = number[i]
for i in range(n): # Counter하여 discount와 원하는 품목 수량이 같은지 확인한다.
if dH == Counter(discount[i:i+10]):
answer += 1
return answer