https://school.programmers.co.kr/learn/courses/30/lessons/131127
def solution(want, number, discount):
cnt = 0
want2 = []
for w,n in zip(want, number):
want2.extend([w]*n)
want2.sort()
for i in range(len(discount)-9):
tmp = discount[i:i+10]
if sorted(tmp)==want2:
cnt+=1
return cnt
리스트의 비교로 확인했다.
먼저 want를 리스트로 만들고 정렬해두고,
discount의 리스트를 10개씩 잘라서 이를 정렬해 want와 같은지 확인했다.
다른 풀이들을 보니 Counter를 사용해 풀이한 정답들이 있길래 나도 counter를 사용해봤다.
from collections import Counter
def solution(want, number, discount):
cnt = 0
want_dic = dict(zip(want,number))
for i in range(len(discount)-9):
if Counter(discount[i:i+10]) == want_dic:
cnt+=1
return cnt
want를 dictionary로 만들고 이를 discount를 10씩 잘라서 Counter 함수를 씌운 결과값과 비교했을 때 같으면 cnt를 증가시키는 식으로 코드를 작성했다.
근데 아무래도 Counter를 사용해서인지 시간이 조금 더 걸리더라.
sorted(want_dic.items(), key = lambda x:x[0])
이렇게 쓰던dic(zip(a,b))
로 두 리스트를 dictionary로 만들 수 있다.