https://school.programmers.co.kr/learn/courses/30/lessons/131127
문제를 꼼꼼히 읽어야 한다!
from copy import deepcopy
def solution(want, number, discount):
answer = 0
if len(discount) < 15:
discount = discount + discount[:15-len(discount)]
B = dict()
for w, n in zip(want, number):
B[w] = n
T = deepcopy(B)
for i in range(len(discount)-9):
D = discount[i:i+10]
for d in D:
if d not in B or B[d] == 0:
continue
B[d] -= 1
if sum(B.values()) == 0:
answer += 1
B = deepcopy(T)
return answer
print(solution(["banana", "apple", "rice", "pork", "pot"],
[3, 2, 2, 2, 1],
["chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana"])) # 3
print(solution(["apple"],
[10],
["banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana"])) # 0
더욱 쉬운 방법으로는 Counter를 사용한다.
from collections import Counter as C
def solution1(want, number, discount):
answer = 0
B = dict()
for w, n in zip(want, number):
B[w] = n
for i in range(len(discount)-9):
c = C(discount[i:i+10])
if c == B:
answer += 1
return answer
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] / [Level 2] / [Python] 택배상자 (0) | 2023.01.25 |
---|---|
[프로그래머스] / [Level 2] / [Python] 롤케이크 자르기 (0) | 2023.01.25 |
[프로그래머스] / [Level 2] / [Python] 연속 부분 수열 합의 개수 (0) | 2023.01.20 |
[프로그래머스] / [Level 2] / [Python] 귤 고르기 (0) | 2023.01.19 |
[프로그래머스] / [Level 3] / [Python] 거스름돈 (0) | 2023.01.06 |