용꿀
꼬마개발자허니
용꿀
전체 방문자
오늘
어제
  • 분류 전체보기 (247)
    • 개발 (74)
      • 스프링 입문 (7)
      • 스프링 기본 (9)
      • ToDo List using JPA (2)
      • 스프링 개념 (9)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (8)
      • 스프링 MVC (3)
      • CS (18)
      • 개발 팁 (8)
      • 스프링 MSA (5)
      • 곰터뷰🐻 (5)
    • 알고리즘 (169)
      • 알고리즘 문제 풀이 (165)
    • 잡동사니 (1)
      • 노래 가사 (1)
hELLO · Designed By 정상우.
용꿀

꼬마개발자허니

[프로그래머스 Lv.2] 할인 행사 (Python)
알고리즘/알고리즘 문제 풀이

[프로그래머스 Lv.2] 할인 행사 (Python)

2024. 10. 3. 19:30

문제 풀이: https://school.programmers.co.kr/learn/courses/30/lessons/131127

 

프로그래머스

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

programmers.co.kr

풀이

파이썬의 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
    '알고리즘/알고리즘 문제 풀이' 카테고리의 다른 글
    • [프로그래머스 Lv.3] 디스크 컨트롤러 (Python)
    • (Python) 백준 14503번 - 로봇 청소기
    • (Python) 백준 2578번 - 빙고
    • [프로그래머스 Lv.2] 피로도 (Python)
    용꿀
    용꿀

    티스토리툴바