프로그래머스/Python

[프로그래머스] 할인 행사 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

우당탕탕 개발자 2023. 7. 24. 13:47
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 원하는 제품을 모두 구매할 수 있는 날 중 가장 빠른 날이 아니라 모두 구매할 수 있는 날의 개수를 구하는 문제입니다.

 

  1. 날짜를 계산하고 반복문에서 사용할 변수를 생성하고 초기화한다. i = 0
  2. 원하는 제품의 수량을 나타낸 배열의 원소 전체 합은 모두 10이므로 해당 날 할인하는 제품의 수가 10개 이상일 경우 반복문을 실행한다. while (len(discount) - i >= 10)
  3. 할인하는 제품에서 원하는 제품의 품목별 개수를 세어 저장할 리스트를 생성하고 초기화한다. li = [0] * len(want)
  4. 원하는 제품의 품목을 인덱스를 활용하여 하나씩 추출한다. for j in range(len(want))
  5. 각 제품의 개수를 할인하는 제품에서 세어 저장한다. li[j] = discount[i : i + 10].count(want[j])
  6. 원하는 제품을 모두 구매할 수 있는 날인지 확인할 변수를 생성하고 초기화한다. result = True
  7. 각 제품의 수를 세어준 리스트를 인덱스를 활용하여 하나씩 추출한다. for j in range(len(li))
  8. 만약 구매할 수 있는 제품의 수와 구매를 원하는 제품의 개수가 다르면 if (li[j] != number[j])
  9. 원하는 제품을 모두 구매할 수 있는 날이 아니다. result = False
  10. 원하는 제품을 모두 구매할 수 있는 날이 아닌 것으로 판명되었기 때문에 비교를 종료한다. break
  11. 모든 비교를 마치고 만약 원하는 제품을 모두 구매할 수 있는 날이면 if (result)
  12. 모두 구매할 수 있는 날의 개수를 1 증가시킨다. answer += 1
  13. 날짜를 다음 날로 옮긴다. 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
반응형