https://school.programmers.co.kr/learn/courses/30/lessons/131127
코드
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):
dic2={}
for j in range(i,i+10):
if discount[j] in dic2:
dic2[discount[j]]+=1
else:
dic2[discount[j]]=1
#print(dic2)
for k,v in dic2.items():
if k not in dic:
break
if dic[k]!=v:
break
else:
answer+=1
return answer
- 먼저 딕셔너리로 원하는 물품:number로 정리한다. 그러면 내가 열흘 간 사야하는 물품이 전부 담길 것이다.
- discount의 길이-9만큼 루프를 돌아야 하는데, 그 이유는 인덱스 에러 때문이다. 열흘 간만 확인하면 되기 때문에 전체 길이에서 마지막 열흘을 확인할 수 있는 곳까지만 확인해주면 된다.
- 내부 루프는 i부터 i+10까지 확인한다. 딕셔너리2는 지금으로부터 열흘 간 살 수 있는 물품을 정리해줄 것이다. 만약 딕셔너리2에 물품이 없으면 정의해주면 되고, 물품이 이미 있으면 1을 추가한다.
- 내부 루프가 끝난 후, 딕셔너리2만큼 루프돌면서 딕셔너리2에 담긴 물품이 내가 사야하는 물품이 아닐 경우, 루프를 중단한다. 또한, 내가 사야하는 물품의 갯수와 맞지 않을 때도 루프를 중단한다.
- 아무 이상없이 포문을 다 돌았으면 answer에 1을 더해준다.
'알고리즘' 카테고리의 다른 글
[백준 1495/파이썬(Python)] 기타리스트(실버 1) (0) | 2023.01.31 |
---|---|
[Cos Pro 1급 기출문제/파이썬] 전광판 문구 출력 (0) | 2023.01.15 |
[백준/파이썬] AC (0) | 2022.08.22 |
[프로그래머스/파이썬] 프린터 (0) | 2022.08.16 |
[프로그래머스/파이썬] 숫자의 표현 (0) | 2022.08.09 |
댓글