https://school.programmers.co.kr/learn/courses/30/lessons/131127
def solution(want, number, discount):
answer = 0
for i in range(len(discount)):
if discount[i] not in want: # 처음에 원하는 제품이 없는 경우
continue
flag = 1 # 모두 할인 받는 경우 : 1
temp_number = number.copy()
for j in range(i, 10 + i):
if j >= len(discount): # 인덱스 오류 방지
flag = 0
break
if discount[j] in want: # 범위 내에 원하는 제품이 있는 경우
idx = want.index(discount[j])
temp_number[idx] -= 1
if temp_number[idx] < 0:
flag = 0
break
else: # 범위 내에 원하는 제품이 없는 경우
flag = 0
break
if flag == 1:
answer += 1
return answer
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
내 코드의 want.index(discount[j]) 부분을 dictionary로 구현해서 반복되는 코드를 효율적으로 작성했다.
dictionary 하나를 만들고 Counter로 범위마다 dictionary를 생성해 비교한다.