Skip to content

Conversation

@heeheejj
Copy link
Contributor

@heeheejj heeheejj commented Dec 8, 2023

PRG 121686 운영체제

  • PCCP 모의고사 1 4번 운영체제

🚩 설계

'''
"우선순위"라는게 나오면 heapq(우선순위 큐)를 생각하자
q라는 우선순위 큐를 특정 시각 기준에 아직 처리되지 않은 프로그램들이 담겨있는 대기 목록이라 생각하고,
여기서 우선순위 가장 높은 애를 빠르게 뽑을 수 있다
일단, 로직의 흐름은 다음과 같다

  1. 큐에서 하나 꺼낸다. (얘는 대기 목록에서 우선순위가 가장 높은 애)
    • 큐에 아무것도 없으면 now값 조정해주고 call_programs 한다.
  2. 시간 계산해주고, answer 배열에 잘 더해준다.
  3. 현재 시각 이하로 대기 목록 q에 추가할 애들을 모두 큐에 넣는다.
    • while program[i][1] (호출 시간)이 현재시각 이하일때 반복
    • 얘를 하기 위해서 호출시간 순으로 program을 정렬해둔다.
      주의: 0초에 호출되는 프로그램이 없을 수도 있다.
      주의: 3-1-2순으로 하면 골치아파짐
      참고: 리스트도 pop 할 수 있다! popleft()는 없고 pop()하면 맨 마지막 원소, pop(0)하면 첫번째 원소
      '''

'''
힙큐 사용법 다시...

  1. import heapq
  2. q 배열을 일단 만든다 or 기존의 리스트를 heapify를 통해 변환 가능
  3. push할 때: heapq.heappush(q, 값) / pop할 때: heapq.heappop(q)
    '''

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant