CodingTest/programmers
[프로그래머스/Programmers] 기능개발 - Python
ukunV
2021. 9. 14. 17:57
Link
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
Solution
def solution(progresses, speeds):
answer = []
count = 0
idx = 0
while idx != len(progresses):
for i in range(len(progresses)):
progresses[i] += speeds[i]
while idx < len(progresses):
if progresses[idx] >= 100:
count += 1
idx += 1
else:
break
if count != 0:
answer.append(count)
count = 0
return answer
Other Solution
필자의 풀이는 특별히 언급할것이 없지만 해당 풀이는 아주 좋은 풀이라 생각하여 짧은 설명을 덧붙이도록 하겠다.
해당 풀이는 answer을 2차원 배열로 사용한다.
1. 먼저 progresses = [93, 30, 55], speeds = [1, 30 ,5]인 경우 첫번째 for문에서 answer = [[7, 1]]이 된다.
2. 다음 for문에서 progresses[1] (30)의 값이 100보다 크거나 같아지는 작업일은 7일보다 작기 때문에 answer = [[7, 2]]가 된다.
3. 마지막 for문에서는 progresses[2] (55)의 값이 100보다 크거나 같아지는 작업일은 7일보다 큰 9일이기 때문에 answer = [[7, 2], [9, 1]]이 된다.
def solution(progresses, speeds):
answer = []
for p, s in zip(progresses, speeds):
if len(answer) == 0 or answer[-1][0] < -((p - 100) // s):
answer.append([-((p - 100) // s), 1])
else:
answer[-1][1] += 1
return [x[1] for x in answer]
🔑 key point: -((p - 100) // s)