일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스택
- C++
- 회귀
- kmu
- instaloader
- 프로그래머스
- 국민대학교
- SQL
- Seq2Seq
- 운영체제
- OS
- GIT
- python3
- googleapiclient
- 재귀
- Stack
- PANDAS
- Python
- 데이터베이스
- LSTM
- Heap
- 파이썬
- machine learning
- Regression
- programmers
- 정렬
- gan
- 머신 러닝
- db
- 국민대
- Today
- Total
정리 노트
프로그래머스 디스크 컨트롤러(Python3) 본문
https://programmers.co.kr/learn/courses/30/lessons/42627
코딩테스트 연습 - 디스크 컨트롤러
하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를
programmers.co.kr
이번에 코딩 테스트 연습하고자 처음 잡아본 문제가 이 디스크 컨트롤러 문제다.
열심히 생각해봤으나 결국 혼자의 힘으로 풀지 못했고 아래의 사이트에서 배웠다.
https://dev-note-97.tistory.com/150
[프로그래머스] 디스크 컨트롤러 / Python
문제주소 :programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가
dev-note-97.tistory.com
코드 설명
- input으로 들어오는 jobs에 대해 SJF scheduling(가장 짧게 걸리는 job을 scheduling)을 적용한 결과를 담을 heap 변수를 빈 리스트로 초기화(schedule_heap)
- heap 안에 담기는 job이 끝나는 시간의 합을 저장하기 위한 변수를 0으로 초기화(time)
- 요청 시간이 time보다 작거나 같은 job들을 heap에 push(push 할 때 [걸리는 시간, 요청 시간] 형식으로 바꿔서 push 해야 SJF 방식으로 heap 정렬 가능) push 후 heap이 비어있다면 time을 가장 빠른 요청 시간으로 변경 후 다시 push 실행
- heap에서 pop한 item을 가지고 time, answer 계산
- answer를 jobs의 길이로 나눠서 return(정수형)
전체 코드는 아래와 같다.
import heapq
def solution(jobs):
schedule_heap = []
time, answer = 0, 0
jobs_cnt = len(jobs)
jobs.sort()
while len(schedule_heap) != 0 or len(jobs) != 0:
while len(jobs) != 0 and jobs[0][0] <= time:
heapq.heappush(schedule_heap, jobs.pop(0)[::-1])
if len(schedule_heap) == 0:
time = jobs[0][0]
continue
now_process = heapq.heappop(schedule_heap)
time += now_process[0]
answer += time - now_process[1]
return answer // jobs_cnt
여기서 python built-in 모듈 'heapq'를 사용했다. heapq의 사용법은 아래의 document를 참고하자.
https://docs.python.org/ko/3.8/library/heapq.html?highlight=heapq#module-heapq
heapq — Heap queue algorithm — Python 3.8.13 문서
heapq — Heap queue algorithm Source code: Lib/heapq.py This module provides an implementation of the heap queue algorithm, also known as the priority queue algorithm. Heaps are binary trees for which every parent node has a value less than or equal to an
docs.python.org
'프로그래머스 코딩테스트 연습' 카테고리의 다른 글
프로그래머스 신규 아이디 추천(Python) (0) | 2022.06.22 |
---|---|
프로그래머스 신고 결과 받기(Python) (0) | 2022.06.22 |
프로그래머스 로또의 최고 순위와 최저 순위(Python) (0) | 2022.06.22 |
프로그래머스 H-Index(Python) (0) | 2022.06.21 |
프로그래머스 전화번호 목록(Python) (0) | 2022.06.21 |