반응형
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/131127

 

프로그래머스

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

programmers.co.kr

문제

멤버쉽을 통해서 구매할려는 품목을 할인 받을 수 있는 날짜를 구해서 return 해야하는 문제입니다.

 

코드

1. 테스트는 통과했지만 테스트 12 말고는 실패했습니다.

def solution(want, number, discount):
    answer = 0
    arr = [number[idx] * [i] for idx, i in enumerate(want)]
    arr = sum(arr, [])
    
    for i in range(len(discount) - len(arr)):
        idx = i
        try:
            tmp = discount[i: i + len(arr)]
            for j in range(len(arr)):
                if arr[j] not in tmp:
                    break
                else:
                    tmp.remove(arr[j])
            if not tmp:
                answer = i + 1
                break
        except:
            pass
        
    return answer

 

2. Counter 함수 사용.(다른분 코드)

from collections import Counter

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):
        if dic == Counter(discount[i:i+10]):
            answer += 1
    
    return answer

반응형

+ Recent posts