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

박신희·2022년 4월 11일
0

[풀이] 프로그래머스

목록 보기
10/33
post-thumbnail

❗ 풀이 과정

이해한 원리

  • 모든 일들은 병행으로 일한다.
  • 병행으로 일처리 하되, 순서대로 완료한 것들을 마무리한다.
    (아무리 빨리 끝났다 하더라도 앞의 일들이 끝나지 않았으면 마무리짓지 못한다.)

코딩 과정

  • 일단 작업 일 수는 먼저 구할 수 있기 때문에, c_days 변수에 저장 둔다. ceil 함수 를 활용해서 남는 일이 생긴다면 올림해준다.
    ex. process = 7일 speed = 3일 인 경우, 3일에 완료
  • cnt변수는 한 번에 마무리 지을 수 있는 작업의 개수이다.
  • 앞부분 부터 하나씩 pop() 해주고 나머지 c_days의 각 요소에 pop한 것을 빼주면서 w_days에 저장한다.
  • w_days에서 0이거나 음수라면, 이미 완료한 일들이기 때문에, for문을 사용해서 완료한 일들은 pop()도 해주고 완료한 일들을 count 해준다.

🤜 풀이 코드

from math import ceil
def solution(progresses, speeds):
    answer = []
    
    # c_days : 작업해야 하는 days count
    c_days=[ ceil((100-p)/s) for p,s in zip(progresses,speeds)]

    while( len(c_days)>0):
        cnt=1
        c=c_days.pop(0)
        w_days=[ j-c for j in c_days ]
        for i in w_days:
            if i<=0:
                cnt+=1
                c_days.pop(0)
            else:
                break
        answer.append(cnt)
        
    return answer

🤷‍♀️ review.

최적화 하지 못한것 같아서 슬프군

profile
log my moments 'u')/

0개의 댓글