https://school.programmers.co.kr/learn/courses/30/lessons/131127
문제는 이해하기 좀 쉬웠다.
다만 구현이 문제였다.
discount의 갯수가 10만개라 이중 반복문은 사용할 수 없다.
때문에 for문 하나로 끝냈어야 하는데, 거기서 1시간은 해맸었던 것 같았다.
import math
from collections import Counter
def solution(want, number, discount):
answer = 0
dic = {}
for i in range(len(want)):
dic[want[i]] = number[i]
dic_count = Counter(dic)
for i in range(0,len(discount) - 9):
a = discount[i:i+10]
a.sort()
b = Counter(a)
c = dic_count & b
if c == dic_count:
answer+=1
return answer
우선 want와 number를 딕셔너리로 담아 갯수를 구한 후 Counter모듈에 담았다. 이를 dic_count라 하겠다.
이후 discount의 반복문을 통해
10개까지 리스트에 담고, Counter에 담는다. 이를 b라고 하겠다.
그 이후 치킨이나 다른 want에 없는 것들을 제외하기 위해 교집합 &을 구했고, (이를 c라 하겠다.)
c와 dic_count를 비교해, 같으면 answer += 1
생각해보니 교집합을 구하므로, a.sort()는 필요없는 구문같다.
'알고리즘' 카테고리의 다른 글
프로그래머스) 2 x n 타일링-python (0) | 2023.01.29 |
---|---|
프로그래머스) 방문 길이-python (0) | 2023.01.26 |
프로그래머스) 스킬트리-python (0) | 2023.01.24 |
프로그래머스)주차 요금 계산-python (0) | 2023.01.24 |
프로그래머스) 압축-python (0) | 2023.01.24 |