프로그래머스 - 할인 행사(레벨2)

응애개발자·2023년 6월 17일
0

파이썬 코테

목록 보기
8/11

대충 요약해 설명하자면 "연속된 10일동안 할인품목으로 주어지는것들이 want배열에 주어지는 것을 충족하는가?" => 이 경우가 총 몇일인가? 입니다.

from collections import Counter

def solution(want, number, discount):
    dictionary = dict(zip(want, number))
    day = 0
    check = {}

    for i in range(len(discount) - 9):
        counter = Counter(discount[i:i+10])
        if counter == dictionary:
            day +=1

    return day

Counter를 import해서 사용합니다.
막상 풀어보면 되게 간단한데요 Counter는 딕셔너리의 하위 클래스로 딕셔너리의 기능을 전부 사용할 수 있습니다.

우선 8번째 줄을 보시면
len(discount)-9인 이유는 일단 10일씩 보니까 뒤에서부터 딱 10일 될때부터는 더 뒤로 봐도 의미가 없죠? 그래서 일단 10을 뺍니다. 근데 range()함수는 n-1까지 범위로 사용하니까 +1을 해줍니다. 결국 -10+1 => -9를 해줍니다.

그리고 바로다음 9번째 줄에 슬라이싱으로 10개씩 묶어서 Counter로 만들고 통째로 앞서 만든 딕셔너리 "dictionary"와 비교를 하면 됩니다.
만약 들어간다면 +1씩 해주면 되죠.

0개의 댓글