프로그래머스|할인 행사

README·2023년 1월 21일
0

파이썬 PS풀이

목록 보기
118/136

문제 설명

배열의 연속된 부분 10개의 값이 원하는 값이 되는 경우의 수를 구하는 문제입니다. 문제에는 필요한 물건이 담긴 배열, 물건별로 필요한 개수가 담긴 배열, 물건이 담긴 배열이 주어집니다.

작동 순서

  1. 배열의 0번부터 10번까지에 담긴 물건들을 저장합니다.
  2. 저장된 물건들이 필요한 물건들이 맞는지 확인합니다.
  3. 현재 가지고 있는 물건들 중 첫번째 물건을 버리고 다음 물건을 저장합니다.
  4. 저장된 물건들과 필요한 물건들을 비교합니다.
  5. 3번과 4번을 배열 끝까지 반복합니다.
  6. 위 과정에서 필요한 물건들을 만족한 경우가 몇 번인지 출력합니다.

소스코드

def solution(want, number, discount):
    answer = 0
    item={}
    for i in range(10):
        if discount[i] in item:
            item[discount[i]]+=1
        else:
            item[discount[i]]=1

    if check(want, item, number):
        answer+=1
            
    for i in range(len(discount)-10):
        if item[discount[i]]==1:
            del item[discount[i]]
        else:
            item[discount[i]]-=1
        if discount[i+10] in item:
            item[discount[i+10]]+=1
        else:
            item[discount[i+10]]=1
        if check(want, item, number):
            answer+=1
    return answer


def check(w, i, n):
    for j in range(len(w)):
        if w[j] not in i or n[j]!=i[w[j]]:
            return False
    return True
profile
INTP 개발자 지망생

0개의 댓글