문제 풀이: https://school.programmers.co.kr/learn/courses/30/lessons/131127
풀이
파이썬의 dictionary를 사용해서 쉽게 풀 수 있는 문제이다.
먼저 required라는 딕셔너리에 구매해야 할 상품들을 key로, 구매해야 할 개수를 value로 해서 저장을 한다. 다음으로 첫날부터 마지막날 - 10일까지 시작 날짜로 잡아두고, 다음 10일간의 상품들을 required와 마찬가지로 상품들을 key로 구매할 수 있는 개수를 value로 저장한다.
각 날짜별로 required와 goods가 동일한 경우를 카운트하면 문제를 풀 수 있다.
from collections import defaultdict
def solution(want, number, discount):
answer = 0
required = {want[idx]: number[idx] for idx in range(len(want))} # 구매해야 할 제품명을 key, 구매해야 할 제품의 수를 value로 저장
for idx in range(len(discount) - 10 + 1): # 첫날부터 (마지막날 - 10일)까지 반복하면서
goods = defaultdict(int)
for day in range(idx, idx + 10): # 10일 동안 할인에 들어가는 제품들을 goods에 저장
goods[discount[day]] += 1
if goods == required: # 모두 할인 받을 수 있는 경우를
answer += 1 # 카운트
return answer
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스 Lv.3] 디스크 컨트롤러 (Python) (2) | 2024.10.12 |
---|---|
(Python) 백준 14503번 - 로봇 청소기 (1) | 2024.10.05 |
(Python) 백준 2578번 - 빙고 (2) | 2024.10.03 |
[프로그래머스 Lv.2] 피로도 (Python) (0) | 2024.10.01 |
[프로그래머스 Lv.3] 길 찾기 게임 (Python) (2) | 2024.09.30 |