개발자 쿠키

[프로그래머스/python] Lv.2 할인 행사 본문

algorithm

[프로그래머스/python] Lv.2 할인 행사

개발자 쿠키 2024. 7. 6. 20:42

할인 행사
https://school.programmers.co.kr/learn/courses/30/lessons/131127?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

from collections import Counter

def solution(want, number, discount):
    answer = 0
    dic = {}
    for w, n in zip(want, number):
        dic[w] = n
    
    for i in range(len(discount)):
        if dic == Counter(discount[i:i+10]):
            answer += 1
    
    return answer

풀이

  1. zip을 사용하여 want와 number의 원하는 물품과 수량을 키-쌍 값으로 저장
  2. dicscount[i:i+10]은 10일간의 할인 목록을 나타냄
  3. Counter를 사용하여 각 항목의 빈도를 계산
  4. dic과 빈도가 같다면 answer += 1

 

zip()

want = ["banana", "apple", "rice", "pork", "pot"]
number = [3, 2, 2, 2, 1]

print(list(zip(want, number)))

# 출력
# [('banana', 3), ('apple', 2), ('rice', 2), ('pork', 2), ('pot', 1)]


Counter()

discount = ["chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana"]

print(Counter(discount))

# 출력
# Counter({'apple': 4, 'banana': 4, 'rice': 2, 'pork': 2, 'chicken': 1, 'pot': 1})