less than 1 minute read

42627. 디스크 컨트롤러 / c++ / level3 / 1시간+

문제 및 코드

접근 방식

자료구조 / 힙 / 우선순위 큐

  1. 문제 자체는 단순했다.
  2. 현재 처리할 수 있는 일들 중 가장 짧은 일을 처리한다.
  3. 모든 일을 처리할 때까지 반복
  4. 이 때, 일을 짧은 순서로 정리하기 위해서 우선순위 큐를 사용했다.
  5. 하지만 간과한 것이 2가지 있었다.
    1. 매번 일을 하나 처리할 때마다, 현재 시간이 증가하기 때문에, 새로운 일들이 들어온다. 이를 놓쳐서 큐에 있는 모든 일을 처리한 뒤 새로운 일들을 큐에 받아들였더니 틀린 답이 나왔었다.
    2. 첫 일을 정할때도 가장 짧은 일을 골라야 한다. jobs 벡터가 정렬되어 있지 않을 것이라고 생각해서 정렬을 했었지만, 단순 시작 시간으로만 정렬을 했었다. 그랬더니 아마 첫 일을 가장 빠른 일이지만 가장 짧은 일을 고르지 못해서 틀렸던 것 같다.
  6. 위의 두가지 문제를 해결했더니 정답을 맞출 수 있었다.

생각해 볼 점

  1. 문제 자체는 굉장히 단순하다고 생각했는데, 엣지 케이스를 찾는데 너무 많은 시간을 허비했다.
  2. 다음부터 이렇게 뭔가 놓치는 부분이 보이면 수도코드로 어느정도 정리해서 엣지 케이스를 잡을 수 있도록 해야겠다.

해시태그

#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL