문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
from collections import Counter
def solution(want, number, discount):
dict = {}
answer = 0
for i in range(len(want)):
dict[want[i]] = number[i]
for i in range(len(discount)-9):
c1 = Counter(discount[i:i+10])
if dict == c1:
answer += 1
return answer
풀이
- discount의 길이가 최대 100000개여서, for문으로 원소가 딕셔너리에 있는지 확인하는 방법은 시간초과가 발생할 것 같았다.
- 회원의 기간은 10일이므로 해당 i부터 10개까지 슬라이싱해서 카운터를 만들었는데, 딕셔너리와 교집합을 하려고 했으나, 딕셔너리와 카운터의 and연산은 할 수 없다고 한다.
- 그래서 무작정 == 연산으로 딕셔너리와 카운터를 비교해보니 같으면 true가 반환되어서, 그때마다 answer를 1 증가해서 반복문 종료 후 answer를 리턴했다.
'👨🏻💻알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv3. 야근 지수 (0) | 2023.01.28 |
---|---|
[프로그래머스] Lv3. 네트워크 (0) | 2023.01.27 |
[프로그래머스] Lv2. 땅따먹기 (0) | 2023.01.26 |
[프로그래머스] Lv2. 스킬트리 (0) | 2023.01.26 |
[프로그래머스] Lv2. 주식 가격 (0) | 2023.01.25 |