이 문제는 작업이 들어오는 시간과, 그 작업이 걸리는 시간을 알려주는 이차원 배열이 주어질 때 각 작업이 요청부터 종료까지 걸린 평균시간이 가장 적은 답을 구하는 문제이다. 살짝 보면 Greedy문제 같지만, 문제에서 제공된 예시들을 봤을 때, CPU 스케줄링의 SPN방식과, SRN 방식이 떠올랐다. 물론 문제에서 선점, 비선점에 대한 설명을 해주지 않아 어떤 방식으로 해야 할지 고민했지만, 우선 구현이 쉬워 보이는 SPN방식으로 문제를 풀어보았고 다행히 정답이 나왔다. SPN방식이란 기본적으로는 작업이 들어온 시간을 기준으로 작업을 처리하지만, 작업을 처리하는 중에 들어온 작업들에 대해서는, CPU요구량이 적은 것 부터 처리하는 비선점 방식의 스케줄링이다. 즉, 이문제의 요구사항과 같이, 기본적으로는 ..
힙
오늘 풀어본 문제는 프로그래머스의 야근지수라는 문제이다. 문제를 간략히 요약하자면, 리스트안의 수들을 n만큼 줄일 수 있는데, n만큼 줄인 후 리스트의 제곱합이 최소가 된 경우의 값을 구하라는 문제이다. 문제를 읽었을때, 그리디하게 생각해서 가장 큰 수를 줄일수록 야근시간(리스트의 제곱합)이 줄어들지 않을까?라는 생각으로 풀었다. works의 최대 길이가 20000이였기 때문에 이중 포문으로 가능할 수도 있겠다 싶어서 풀었고 다행히 통과하였다. 가장 큰 값을 기준으로 잡고, works를 돌면서 기준과 같은 값은 -1 처리를 해주었다. 순회가 끝날 때마다, 기준값을 1씩 낮춰주었고, 기준값이 0보다 작아지거나, n이 0이 되면 답을 반환하였다. 사실 문제를 풀면서도 시간 초과가 될 줄 알았는데, 운이 좋게..