최대 1 분 소요

문제 링크

내 풀이

def solution(want, number, discount):
    buy_dict = {}
    k = 0
    count = 0
    for fruit, amount in zip(want, number):
        buy_dict[fruit] = amount
    while k + 10 <= len(discount):
        buy_dict_2 = buy_dict.copy()
        for dis in discount[k:k+10]:
            if dis in list(buy_dict_2.keys()):
                if buy_dict_2[dis] > 0: 
                    buy_dict_2[dis] -= 1
        if set(list(buy_dict_2.values())) == {0}:
            count += 1                
        k += 1
    return count  

다른 풀이

from collections import Counter

def solution(want, number, discount):
    answer = 0
    check = {}
    for w, n in zip(want, number):
        check[w] = n
    
    for i in range(len(discount)-9):
        c = Counter(discount[i:i+10])
        if c == check:
            answer += 1

    return answer

풀이 해석

  • Counter를 이용하여 discount의 인덱스 범위안에서의 상품과 그 갯수를 dict타입으로 표현하였다.
  • 이를 want와 number를 이용하여 만든 dict타입과 비교하여 같을 시에 answer를 +1 하는 방식을 이용하였다

배울 점

  • Counter는 dict타입으로 나타난다

댓글남기기