728x90
https://school.programmers.co.kr/learn/courses/30/lessons/131127
나의 풀이
- 마트에서 할인 행사를 하고 하루에 한 품목씩 할인함
- 회원가입을 하면 10일간 마트 할인 행사 참여 가능
- want에 담긴 wish list를 모두 살 수 있는 마트 할인 행사 기간이 며칠인지 구해야 함
collections Counter X
def solution(want, number, discount):
answer = 0
for i in range(10, len(discount)+1):
dis = discount[i-10:i]
for c, (w, n) in enumerate(zip(want, number)):
if dis.count(w) < n:
break
elif c == len(want)-1:
answer += 1
return answer
collections Counter O
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
코드 상으로 위의 코드가 이중 for문을 사용하기 때문에 시간복잡도가 높을 줄 알았으나 Counter에도 반복문이 존재하고 dict으로 반환하기 break를 사용하지 못한다. 그러므로 이 문제에서는 collections Counter를 쓰지 않은 위의 코드가 더 빠르다.
728x90
'Coding Test > programmers' 카테고리의 다른 글
[Python] 파이썬 프로그래머스 디스크 컨트롤러 (0) | 2023.05.02 |
---|---|
[Python] 파이썬 프로그래머스 베스트 앨범 (0) | 2023.05.01 |
[Python] 파이썬 프로그래머스 아방가르드 타일링 (0) | 2023.05.01 |
[SQL] 프로그래머스 중복 제거하기 (0) | 2023.04.19 |
[SQL] MySQL 프로그래머스 동물 수 구하기 (0) | 2023.04.19 |