프로그래머스/Python
[프로그래머스] 할인 행사 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 24. 13:47
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
해당 문제는 원하는 제품을 모두 구매할 수 있는 날 중 가장 빠른 날이 아니라 모두 구매할 수 있는 날의 개수를 구하는 문제입니다.
- 날짜를 계산하고 반복문에서 사용할 변수를 생성하고 초기화한다. i = 0
- 원하는 제품의 수량을 나타낸 배열의 원소 전체 합은 모두 10이므로 해당 날 할인하는 제품의 수가 10개 이상일 경우 반복문을 실행한다. while (len(discount) - i >= 10)
- 할인하는 제품에서 원하는 제품의 품목별 개수를 세어 저장할 리스트를 생성하고 초기화한다. li = [0] * len(want)
- 원하는 제품의 품목을 인덱스를 활용하여 하나씩 추출한다. for j in range(len(want))
- 각 제품의 개수를 할인하는 제품에서 세어 저장한다. li[j] = discount[i : i + 10].count(want[j])
- 원하는 제품을 모두 구매할 수 있는 날인지 확인할 변수를 생성하고 초기화한다. result = True
- 각 제품의 수를 세어준 리스트를 인덱스를 활용하여 하나씩 추출한다. for j in range(len(li))
- 만약 구매할 수 있는 제품의 수와 구매를 원하는 제품의 개수가 다르면 if (li[j] != number[j])
- 원하는 제품을 모두 구매할 수 있는 날이 아니다. result = False
- 원하는 제품을 모두 구매할 수 있는 날이 아닌 것으로 판명되었기 때문에 비교를 종료한다. break
- 모든 비교를 마치고 만약 원하는 제품을 모두 구매할 수 있는 날이면 if (result)
- 모두 구매할 수 있는 날의 개수를 1 증가시킨다. answer += 1
- 날짜를 다음 날로 옮긴다. i += 1
반응형
3. 소스코드
def solution(want, number, discount):
answer = 0
i = 0
while (len(discount) - i >= 10):
li = [0] * len(want)
for j in range(len(want)):
li[j] = discount[i : i + 10].count(want[j])
result = True
for j in range(len(li)):
if (li[j] != number[j]):
result = False
break
if (result):
answer += 1
i += 1
return answer
728x90
반응형