본문 바로가기
코딩테스트/Python

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

by 포뇨j 2023. 12. 7.

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

 

프로그래머스

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

programmers.co.kr

 

def solution(want, number, discount):
    answer = 0
    dic1 = {}
    
    #정현이가 원하는 제품별 수량
    for i in range(len(number)):
        dic1[want[i]] = number[i]
       
    #10일간 할인하는 제품별 수량
    for i in range(0, len(discount)-9):
        dic2 = {}
        
        for j in range(i, i+10):
            if discount[j] in dic2:
                dic2[discount[j]] += 1
            else:
                dic2[discount[j]] = 1
                
        if dic1 == dic2:
            answer += 1
            
    return answer

 

딕셔너리 2개를 이용해서 풀었다.

dic1은 정현이가 원하는 제품별 수량을 저장했고, dic은 할인받을 수 있는 10일간 제품별 수량을 저장하도록 했다.

두 딕셔너리가 같은 날짜를 세는 방식이다.

 

다른 사람의 풀이를 보면 딕셔너리를 하나만 선언하고, 10일치 제품별 수량은 Counter 함수를 사용해 비교하는 방식으로 풀었다.

이중 for문 구조보다 더 좋은 방법인 것 같다.