반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
from collections import Counter
def solution(want, number, discount):
result= 0
dic = {}
for i in range(len(want)):
dic[want[i]] = number[i]
total = sum(number)
for i in range(len(discount)):
items = discount[i:i+10]
if len(items) < 10:
return result
elif dic == dict(Counter(items)):
result +=1
return result
먼저 딕셔너리 자료구조(dic)에 원하는 제품과 제품의 수를 입력합니다.
예를 들어 문제처럼 주어졌다면
- want = ["banana", "apple", "rice", "pork", "pot"]
- number = [3, 2, 2, 2, 1]
딕셔너리 자료구조는 아래와 같이 구성이 됩니다.
discount 리스트 자료구조에서 10개씩 품목(items)을 받아옵니다.
이때 품목의 수(len(items))가 10보다 작다면 반복문을 종료하며 결과(result)를 return 합니다.
품목의 수(len(items))가 10이라면 Counter() 모듈을 이용하여 리스트안에 있는 item의 수를 셉니다.
- items 리스트와 dict(Counter(items))를 출력하면 다음과 같습니다.
주어진 dic와 dict(Counter(items))가 동일하다면
result + 1을 하고 반복문이 종료되거 조건에 부합하지 않는다면 결과를 return 합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 점프와 순간 이동 파이썬(Python) (0) | 2022.12.28 |
---|---|
[코딩테스트] 프로그래머스 영어 끝말잇기 파이썬(Python) (0) | 2022.12.27 |
[코딩테스트] 프로그래머스 크기가 작은 부분문자열 파이썬(Python) (0) | 2022.12.23 |
[코딩테스트] 프로그래머스 N개의 최소공배수 파이썬(Python) (0) | 2022.12.22 |
[코딩테스트] 프로그래머스 연속 부분 수열 합의 개수 파이썬(Python) (0) | 2022.12.21 |