나의 답
import math
def solution(progresses, speeds):
dic = []
for index, value in enumerate(progresses):
a = math.ceil((100 - value)/speeds[index])
dic.append(a)
result = []
max = dic[0]
cnt = 0
for i in range (len(dic)-1):
cnt+=1
if max <dic[i+1]:
result.append(cnt)
cnt = 0
max=dic[i+1]
result.append(cnt+1)
return result
각 프로세스 당 걸리는 시간을 idc 리스트로 관리하였다.
result는 최종 답을 넣을 리스트이고,
dic 리스트 숫자에서 기존에 있던 큰 값보다 큰 값이 나올 때마다 숫자를 새로 카운트해주고자 하였다.
맨 마지막 값은 그냥 따로 append를 하고 말았는데, 좋은 풀이는 아닌듯 싶다.
다른 사람 풀이
from math import ceil
def solution(progresses, speeds):
daysLeft = list(map(lambda x: (ceil((100 - progresses[x]) / speeds[x])), range(len(progresses))))
count = 1
retList = []
for i in range(len(daysLeft)):
try:
if daysLeft[i] < daysLeft[i + 1]:
retList.append(count)
count = 1
else:
daysLeft[i + 1] = daysLeft[i]
count += 1
except IndexError:
retList.append(count)
return retList
이렇게 list랑 map 을 통해서 간결하게 값을 넣을 수 있다니..
파이썬 시간에 분명 배운 것 같은데 기억이 안난다.
아래 로직은 거의 비슷한 것 같은데 except IndexError를 이용해서 풀다니...
저렇게 하면 마지막 값을 append 할 수 있군.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 스택/큐 - 주식가격 (1) | 2024.01.29 |
---|---|
[프로그래머스] 스택/큐 - 올바른 괄호 (0) | 2024.01.27 |
[프로그래머스] 스택 - 같은 숫자는 싫어 (1) | 2024.01.26 |
[프로그래머스] 해시 - 전화번호 목록 (1) | 2024.01.24 |
[프로그래머스] 해시 - 폰켓몬 (0) | 2024.01.23 |