Level 2. 기능개발

Pear_Mh·2021년 6월 19일
0

Programmers-Level 2.

목록 보기
6/40

06. 기능개발

코딩테스트 연습 > 스택/큐 > 기능개발
https://programmers.co.kr/learn/courses/30/lessons/42586


문제 설명

Input value =

  • progresses = 100 미만의 자연수 리스트

  • speeds = 100 이하의 자연수 리스트

Process =

  • 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다.

Output value =

  • result = 동시에 배포되는 원소의 갯수 리스트

제한 사항

  • 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.

  • 작업 진도는 100 미만의 자연수입니다.

  • 작업 속도는 100 이하의 자연수입니다.

  • 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.


문제 구상

#00
progresses = [93, 30, 55]	
speeds = [1,30,5]
  1. 하나의 progresses를 끝내기 위해 필요한 시간을 리스트화 한다.
#01
finish = []
for p,s in zip(progresses,speeds):
    finish.append((100-p)//s)
  1. 빈 리스트를 만들어 필요한 시간 리스트의 원소를 append((i,1))하며,전의 원소값과의 비교를 통해 해당 값이 작으면 원소값의 1번째 값에 +1을 하고, 아닐 경우 append((i,1))한다.
#02
result = []
for f in finish:
    if result == [] or result[-1][0]<f:
        result.append([f,1])
    else:
        result[-1][1]+=1
  1. result의 원소의 1번째 값을 리스트로 출력한다.
#03
[answer[1] for answer in result]

문제 풀이

def solution(progresses,speeds):
    finish = []
    for p,s in zip(progresses,speeds):
        finish.append(-((p-100)//s))
    result = []
    for f in finish:
        if result == [] or result[-1][0]<f:
            result.append([f,1])
        else:
            result[-1][1]+=1
    return [answer[1] for answer in result]
profile
Beyond the new era.

0개의 댓글

관련 채용 정보