Programming/Programmers 문제풀이
디스크 컨트롤러
홍열
2020. 12. 24. 10:52
728x90
프로그래머스 사이트에 있는 heap 관련 문제 중에 두번째 문제
문제 설명을 하면, 요청시간부터 총 걸린 시간을 알아내고, 평균이 가장 작게 하는 문제
문제 구분이 heap이어서 생각하다 보니 heap이 필요할까라는 생각을 해서 list로 무식하게 풀기로함
구현 아이디어
[[0,3], [1,9], [2,6]] 이 들어오면 맨 처음걸 무조건 넣고 시작
[[1,9], [2,6]] 중에서 [0,3] 의 끝나는 시간에서 가장 짧은것을 찾아서 그 다음에 시작
같은 시작이 존재한다면 끝나는 시간이 짧은것을 선택하도록 한다.
그렇게 된다면, [0,3], [2,6], [1,9]의 순으로 진행되면 평균이 가장 짧다.
def solution(jobs):
answer = 0
length = len(jobs)
result = []
result.append(jobs[0])
jobs.pop(0)
while jobs:
minValue = 100000
temp_list = []
pos = 0
for i, item in enumerate(jobs):
if result[-1][1] - item[0] < 0: continue
if result[-1][1] - item[0] < minValue:
minValue = result[-1][1] - item[0]
temp_list = item
pos = i
elif result[-1][1] - item[0] == minValue:
if temp_list[1] > item[1]:
minValue = result[-1][1] - item[0]
temp_list = item
pos = i
result.append(temp_list)
jobs.pop(pos)
cur = 0
for i, item in enumerate(result):
if i > 0:
answer += item[1] + cur - item[0]
cur += item[1]
else:
answer += item[1] - item[0]
cur = answer
return answer / length
하지만 결과는 ...실패
런타임 에러도 잡아야하겠지만, 테스트 케이스중에 실패한것이 있어 조금 더 해보기로 한다,.