일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- coursera
- mysql
- 머신러닝
- sql오답노트
- SQL공부
- 안드류응
- sql
- 코세라머신러닝
- PYTHON
- programmers
- Andrew NG
- 파이썬
- 알고리즘
- sorted
- groupby
- Algorithm
- 머신러닝강의
- 프로그래머스
- WHERE
- 코세라머신러닝강의
- DATE_FORMAT
- 경제공부
- 프로그래머스SQL
- Machine Learning
- map
- 인프런sql강의
- orderby
- 코세라강의
- 코세라
- POP
Archives
- Today
- Total
미래를 예측하는 데이터분석가
[Programmers] 프로그래머스 lv.2 기능개발 본문
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
- 조건
- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
- 작업 진도는 100 미만의 자연수입니다.
- 작업 속도는 100 이하의 자연수입니다.
- 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.
progresses | speeds | return |
[93, 30, 55] | [1, 30, 5] | [2, 1] |
[95, 90, 99, 99, 80, 99] | [1, 1, 1, 1, 1, 1] | [1, 3, 2] |
모든 테스트를 통과한 풀이답안
def solution(progresses, speeds):
answer = []
ans=[]
for i in range(len(progresses)):
p= progresses.pop(0)
s= speeds.pop(0)
if (100-p)%s==0:
answer.append((100-p)//s)
else:
answer.append((100-p)//s + 1)
while len(answer) > 0:
max = answer.pop(0)
answer1 = answer.copy()
num = 1
for j in range(len(answer)):
if max >= answer[j]:
num+=1
answer1.pop(0)
else:
break
ans.append(num)
answer = answer1.copy()
return ans
다른 사람의 풀이
def solution(progresses, speeds):
Q=[]
for p, s in zip(progresses, speeds):
if len(Q)==0 or Q[-1][0]<-((p-100)//s):
Q.append([-((p-100)//s),1])
else:
Q[-1][1]+=1
return [q[1] for q in Q]
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 프로그래머스 타겟넘버 lv.2 (0) | 2021.02.19 |
---|---|
[Programmers] 프로그래머스 전화번호 목록 lv.2 (0) | 2021.02.16 |
[Programmers] 프로그래머스 lv.2 다리를 지나는 트럭 (0) | 2021.02.10 |
[Programmers] 프로그래머스 lv.2 위장 (0) | 2021.02.09 |
[Programmers] 프로그래머스 가장 큰 수 lv.2 (0) | 2021.02.08 |