[코테] 해쉬(Hash) - 할인 행사[프로그래머스]

Bpius·2023년 6월 8일
0

알고리즘 문제풀이

목록 보기
18/28
post-thumbnail

문제

출처: 프로그래머스 - 할인 행사

풀이

자료구조 해쉬(딕셔너리)와 모듈 collections의 Counter을 활용하여 간단히 해결할 수 있다.
Counter 참조
해쉬 참조

딕셔너리 자료구조를 하나 생성하여 정현이가 원하는 품목을 key로 수량을 value로 생성한다.
discount 날짜는 정현이가 원하는 최소 품목 날짜 10 이상이므로, discount 10이면 1번을 11이면 2번, 12면 3번...이런식으로 비교할 수 있도록 날짜 범위를 10으로 지정하여 슬라이링 윈도우 방식으로 반복문을 통해 비교하도록 한다.
비교하여 품목과 수량이 일치하면 일수를 1씩 올려주고 반환하도록 한다.
Counter 함수는 value 값을 기준으로 내림차순으로 정렬하기 때문에 비교 가능하다.

코드

from collections import Counter

def solution(want, number, discount):
    n = len(discount) - 9 # discount의 반복 횟수
    m = len(want)
    answer = 0
    dH = {} # 딕셔너리 자료구조 생성
    
    for i in range(m): # 정현이가 원하는 품목과 수량 생성
        dH[want[i]] = number[i]

    for i in range(n): # Counter하여 discount와 원하는 품목 수량이 같은지 확인한다.
        if dH == Counter(discount[i:i+10]):
            answer += 1

    return answer
profile
데이터 굽는 타자기

0개의 댓글