from collections import Counter
from collections import defaultdict
def solution(want, number, discount):
d = defaultdict(int)
for key, value in zip(want, number):
d[key] = value
cnt = 0
for i in range(len(discount)-9):
T = discount[i:i+10]
T_count = Counter(T)
if len(T_count) != len(d): continue
flag = True
for key in want:
if d[key] != T_count[key]:
flag = False
break
if flag == True:
cnt+=1
if cnt: return cnt
else: return 0
역시나 Counter함수를 이용하는 것이라고 생각했고, 어렵지 않게 문제를 해결했다. 10일 단위로 끊은 배열의 Counter 값과 want-number쌍으로 만든 데이터 값을 서로 비교해 같다면 result 값을 1 올려준다.
from collections import Counter
def solution(want, number, discount):
answer = 0
dic = {}
for i in range(len(want)):
dic[want[i]] = number[i]
for i in range(len(discount)-9):
if dic == Counter(discount[i:i+10]):
answer += 1
return answer
알게 된 사실
if dic == Counter(discount[i:i+10]):
dict형과 Counter형이 반환하는 데이터 형식이 서로 달라 이런식의 비교는 불가능할 줄 알았는데 가능했다. 잘 알아두어야 겠다.