https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
슬라이딩 윈도우(혹은 투포인터), 맵 자료구조의 개념을 알면 쉽게 풀 수 있는 문제입니다.
가입한 날로부터 10일간 할인을 받을 수 있는 것을 이용해 1~10일동안 살 수 있는 품목을 카운팅합니다.
만약 2~11일 동안 살 수 있는 품목이 궁금하다면, 10일간을 전부 찾을게 아니라 카운팅한 값에서 1일의 할인상품을 빼주고, 11일의 할인상품을 더해주면 됩니다.
우리가 원하는 상품목록이 있기 때문에 그 상품들만 찾아주면 되고 카운팅과 범위 처리는 예외가 나지 않도록 적당히 잘 해주면 됩니다. (설명이 좀 그런데 정말 적당히 잘 하면 됩니다. ㅋㅋ;;)
def solution(want, number, discount) -> int:
answer = 0
product = {}
idx = 0
for w in want:
product[w] = idx
idx += 1
for i in range(10):
if discount[i] in product:
number[product[discount[i]]] -= 1
for i in range(len(discount)):
if checklist(number):
answer += 1
if discount[i] in product:
number[product[discount[i]]] += 1
if i + 10 < len(discount) and discount[i + 10] in product:
number[product[discount[i + 10]]] -= 1
return answer
def checklist(number) -> bool:
for n in number:
if n > 0:
return False
return True
728x90
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 132267. 콜라 문제 (Lv.1) (0) | 2022.10.24 |
---|---|
[Python] 프로그래머스 131705. 삼총사 (Lv.1) (0) | 2022.10.24 |
[Python] 프로그래머스 131130. 혼자 놀기의 달인 (Lv.2) (0) | 2022.10.10 |
[Python] 프로그래머스 17681. 비밀지도 (Lv.1) (1) | 2022.10.10 |
[Python] 프로그래머스 17682. 다트 게임 (Lv.1) (0) | 2022.10.10 |