반응형
풀이
import math
def solution(progresses, speeds):
answer = []
remain_day_list = []
for i in range(len(progresses)):
remain_progress = 100 - progresses[i]
remain_day = remain_progress / speeds[i]
remain_day_list.append(math.ceil(remain_day))
for i in range(1,len(remain_day_list)):
if remain_day_list[i-1] > remain_day_list[i]:
remain_day_list[i] = remain_day_list[i-1]
count = 1
for i in range(1,len(remain_day_list)):
if remain_day_list[i-1] >= remain_day_list[i]:
count += 1
else:
answer.append(count)
count = 1
answer.append(count)
return answer
실행 결과
정확성 테스트
테스트 1 〉 | 통과 (0.06ms, 10.7MB) |
테스트 2 〉 | 통과 (0.09ms, 10.9MB) |
테스트 3 〉 | 통과 (0.08ms, 10.8MB) |
테스트 4 〉 | 통과 (0.07ms, 10.7MB) |
테스트 5 〉 | 통과 (0.06ms, 10.7MB) |
테스트 6 〉 | 통과 (0.06ms, 10.8MB) |
테스트 7 〉 | 통과 (0.08ms, 10.7MB) |
테스트 8 〉 | 통과 (0.06ms, 10.7MB) |
테스트 9 〉 | 통과 (0.07ms, 10.8MB) |
테스트 10 〉 | 통과 (0.07ms, 10.8MB) |
해설
우선 남은 일자를 계산하였습니다. 그 다음, 남은 일자를 하나의 배열로 만들었습니다. 만약 앞에 프로세스보다 남은 일자가 적은 경우, 앞에 있는 일자와 동일하게 초기화를 시켜주었습니다. 그 다음, 동일한 날짜의 개수를 카운트 해줍니다. 만약 다른 날짜가 나오는 경우 해당 카운트를 반환 리스트에 삽입하였습니다. for 문이 끝난 후, 남은 카운트를 추가해주고 반환해주어 문제를 풀어보았습니다.
반응형
'SW > 알고리즘' 카테고리의 다른 글
파이썬 : 프로그래머스 : 완주하지 못한 선수 : 풀이 (0) | 2019.08.25 |
---|---|
파이썬 : 프로그래머스 : 예산 : 풀이 (0) | 2019.08.24 |
파이썬 : 프로그래머스 : 전화번호목록 : 풀이 (1) | 2019.08.21 |
C++ : 프로그래머스 : 짝수와 홀수 : 풀이 (0) | 2019.06.22 |
C++ : 프로그래머스 : 약수의 합 : 풀이 (0) | 2019.06.19 |