https://school.programmers.co.kr/learn/courses/30/lessons/131127
<내 코드>
from collections import Counter
def solution(want, number, discount):
result = 0
goods, sum_num = {}, sum(number)
for product, cnt in zip(want, number):
goods[product] = cnt
counter_goods = Counter(goods)
for i in range(len(discount) - sum_num + 1):
c = Counter(discount[i: i + sum_num])
c.subtract(goods)
if all(value == 0 for value in c.values()):
result += 1
return result
-> 지난번 귤고르기 문제에서 Counter클래스를 사용한 dict를 통해 값을 처리했었는데 한번 클래스의 메소드를 모두 사용하는 방법을 해봤다. 굳이 subtract등을 사용하지 않아도 되고 선언해준 dict에서 슬라이싱 된 discount 배열에서 Counter으로 바로 비교하는 방법을 하는게 더 좋은 방법이라고 느껴졌다. (사실 Counter객체와 딕셔너리 객체와 비교가 되는지 몰랐다..)
<정해코드>
from collections import Counter
def solution(want, number, discount):
answer = 0
dic = {}
for i in range(len(want)):
dic[want[i]] = number[i]
for i in range(len(discount)-9):
if dic == Counter(discount[i:i+10]):
answer += 1
return answer
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers / Level2] 의상 (0) | 2024.01.29 |
---|---|
[Programmers / Level2] 행렬의 곱셈 (1) | 2024.01.28 |
[Programmers / Level2] n^2 배열 자르기 (0) | 2024.01.26 |
[Programmers / Level2] 연속 부분 수열 합의 개수 (0) | 2024.01.25 |
[Programmers / Level2] 귤고르기 (1) | 2024.01.24 |