[알고리즘] 기능개발(프로그래머스 문제) python 풀이(스택)
- 기타/알고리즘
- 2020. 10. 9.
기능개발 문제
programmers.co.kr/learn/courses/30/lessons/42586
[풀이방법]
앞에 작업보다 뒷작업이 먼저 끝나면 앞에 작업이 끝날때 까지 기다려야 하므로 각 progresses 마다 배포일을 구한다음 progress 순서대로 배포일을 스택에 담았을때 다음 배포일이 스택에 있는 배포일보다 작다면 스택에 쌓고 다음 배포일이 스택에 있는 배포일보다 크다면 스택에 있는걸 모드 pop 한다음 배포일을 스택에 넣는다.
progresses = [93, 30, 55]
speeds = [1, 30, 5]
배포일은 [7, 4, 9] (배포일식: (100 - progress) / speed)
[풀이 코드]
import math
def solution(progresses, speeds):
days = 0
stack = []
answer = []
for i in range(len(progresses)):
days = math.ceil((100 - progresses[i]) / speeds[i])
if i == 0:
stack.append(days)
else:
if stack[0] >= days:
stack.append(days)
else:
answer.append(len(stack))
stack.clear()
stack.append(days)
answer.append(len(stack))
return answer
|
'기타 > 알고리즘' 카테고리의 다른 글
[Java 알고리즘] 알고리즘 전략과 charAt(), substring() 함수 활용 문제풀이, String 형인 숫자를 int형으로 변경 방법, StringBuilder 사용이유 (0) | 2021.01.27 |
---|---|
[알고리즘] 재귀함수의 정의와 조합과 순열 재귀함수로 구현하기 python (0) | 2020.10.17 |
[알고리즘] 시간 복잡도와 공간 복잡도의 이해와 빅오(Big-Oh) 표기법 (0) | 2020.10.09 |
[알고리즘]주식가격(프로그래머스 문제) python 풀이(스택) (2) | 2020.10.05 |
[알고리즘]Two Sum(LeetCode 문제) python 풀이(정렬, 해시) (0) | 2020.09.22 |