[프로그래머스]기능개발

링크 : 문제 바로가기

나의 오답

def solution(progresses, speeds):
    answer = []
    result=[]
    for i in range(len(progresses)):
        a= (100-progresses[i])//speeds[i]
        b= (100-progresses[i])%speeds[i]
        if  b == 0:
            pass
        else:
            a+=1
        result.append(a)
    
    cnt=1
    for i in range(len(result)-1):
        if result[i] >= result[i+1]:
            cnt+=1
        else:
            answer.append(cnt)
            cnt=1
    answer.append(cnt)
    
    return answer

해결

문제 이해를 잘못했다. 만약 완성까지 일수가 [ 7,3,2,1,5] 다음과 같다면 7일 뒤에 있는 3일,2일,1일,5일만에 끝나는 작업들은 모두 배포되지 못하다가 7일날 한번에 다같이 배포가 되어야한다. 하지만 나는 무조건 바로 전단계보다 적거나 같은 일수를 가져야한다는 조건을 써서 이 경우에는 7일,3,일,2일,1일만 한번에 배포되고 5일은 따로 배포되는 구성을 만들었다. 즉 로직을 배열에서 순서대로 진행될 때 새로운 최댓값을 만나면 배포되는 형식으로 바꿨다.

def solution(progresses, speeds):
    answer = []
    result=[]
    for i in range(len(progresses)):
        a= (100-progresses[i])//speeds[i]
        b= (100-progresses[i])%speeds[i]
        if  b == 0:
            pass
        else:
            a+=1
        result.append(a)
    
    bigone=result[0]
    cnt=0
    for i in range(len(result)):
        if bigone < result[i]:
            answer.append(cnt)
            bigone=result[i]
            cnt=1
        else:
            cnt+=1
    answer.append(cnt)
    return answer

알고리즘 : 스택/큐

results matching ""

    No results matching ""