1)Level2-spicyer
알고리즘:
[1]heapq를 이용하면 간단하게 풀이 가능.
[2]heap에서 꺼내면서 가장 작은걸 계산후 넣어주면서 계산.
[3]테스트 케이스 추가 생각, -1을 리턴하는 경우와 [2] 1 0 경우.
2)Level3-디스크 컨트롤러
알고리즘:
[1] 테스트 케이스가 매우 부족하다. 추가해서 먼저 알고리즘의 헛점 체크가 필요하다.
[[1, 9], [1, 4], [1, 5], [1, 7], [1, 3]] 13
[2] 문제를 시작하기에 앞서서 문제를 정확하게 이해하고 조건을 짜는게 가장 중요. 아니면 길을 잃는다.
[3] 작업 종료 조건은 작업을 전부 처리 할때까지
[4] 현재 시점에서 처리 할 수 있는 것들을 모두 힙에 넣는다. 이미 넣은건 제외
[5] 작업 현재까지 기록한 마지막을 기록해주고, 작업을 처리 할경우에만 처리 표시를 해준다. 작업을 처리 할때는 가장 짧은걸 꺼내서 현재시간부터 기다린 시간을 빼주고 기록해준다. 그리고 현재 시간을 증가시켜준다.
[6] 작업을 처리 할 수 없지만, 작업이 남았다면 시간이 아직 안온것이므로 현재시간을 올려준다.
[7]마지막은 정답의 평균 리턴
3)Level3-이중 우선순위 큐
알고리즘:
[1] 모든 연산을 처리한 후 큐가 비어 있으면 [0,0] / 비어 있지 않으면 [최댓값, 최솟값]을 리턴
[2] queue 를 만들고 양쪽 pop(0), pop()을 이용해서 원하는 연산 구현