티스토리 뷰

Python

[프로그래머스] 할인행사

up_one 2025. 6. 1. 00:08

https://school.programmers.co.kr/learn/courses/30/lessons/131127

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

회원등록 시 원하는 제품을 모두 할인받을 수 있는 회원등록 날짜의 총일수를 구하는 문제

  • want : 구매하고 싶은 제품
  • number : 원하는 제품의 수량
  • discount : 할인하는 제품 (매일 한 가지 제품을 할인)

회원은 할인하는 제품을 하루에 하나 씩만 구매 가능, 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치하는 리스트의 개수가 할인받을 수 있는 회원등록 날짜의 총 일수

 

Solution.

  1. want, number을 각각 key와 value로 설정
    • 2개의 리스트를 딕셔너리로 반환 : dict(zip(list1, list2))  (list1이 key)
  2. idx + sum(number)가 len(discount) 보다 작을 때까지 discount의 Counter 구하기
    • discount 배열을 10칸 씩 슬라이딩하면서 각각의 Counter 구하기
  3. 2번의 Counter와 1번의 Counter을 비교해서 같으면 answer을 1씩 증가
from collections import Counter

def solution(want, number, discount):
    answer = 0		# 총 일수
    dic = dict(zip(want, number))
    
    idx = 0
    while idx!=len(discount):
        c1 = Counter(discount[idx:idx+sum(number)])	# 원하는 제품의 총 수량만큼 슬라이딩
        
        # 원하는 제품의 딕셔너리와 총 수량의 Counter을 비교
        if c1 == dic:
            answer+=1
        idx += 1
    return answer

'Python' 카테고리의 다른 글

대용량 데이터 처리에 유용한 Polars  (0) 2025.06.27
[프로그래머스] 카펫  (0) 2025.06.06
[프로그래머스] 연속된 부분 수열의 합  (0) 2025.05.26
[프로그래머스] 안전지대  (0) 2025.05.20
[OpenCV2] 이미지 연산  (0) 2025.04.10
TAG more
글 보관함
최근에 올라온 글