-
[알고리즘] 프로그래머스 디스크 컨트롤러 Java(자바)코딩/알고리즘 2022. 1. 1. 18:39
- 문제
https://programmers.co.kr/learn/courses/30/lessons/42627
코딩테스트 연습 - 디스크 컨트롤러
하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를
programmers.co.kr
문제가 길어서 링크로 이동하는게 편할 듯 합니다.
- 코드 설명
1시간 정도 고민해보고 풀어봤는데 정답을 찾지 못해서 답을 참고(따라)했습니다.
https://codevang.tistory.com/316
프로그래머스_힙(Heap)_디스크 컨트롤러 (JAVA)
문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입
codevang.tistory.com
역시 문제를 잘 읽어야한다는 점을 다시 한번 배웠습니다.
그리고 람다식을 이용한 정렬방법도 새로 알게 되었네요. 성능이 느리다곤 하는데 제가 쓰는 방식인 클래스를 선언하는 것 보단 시간적인 ㅌ측면에서 좋아보이네요.
import java.util.*; class Solution { public int solution(int[][] jobs) { int answer = 0; int index_jobs = 0; int job_complete = 0; int end = 0; PriorityQueue <int[]> pq = new PriorityQueue<>((o1, o2) -> o1[1]-o2[1]); Arrays.sort(jobs, (o1, o2) -> o1[0]- o2[0]); int len = jobs.length; while(job_complete < len){ while(index_jobs<jobs.length && jobs[index_jobs][0] <= end){ pq.add(jobs[index_jobs++]); } if(pq.isEmpty()){ end = jobs[index_jobs][0]; } else{ int []temp = pq.poll(); answer += temp[1] + (end-temp[0]); end += temp[1]; job_complete++; } } return (int)Math.floor(answer/len); } }
- 결과
'코딩 > 알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 신규아이디 추천 Java(자바) (0) 2022.01.03 [알고리즘] 프로그래머스 점프와 순간이동 Java(자바) (0) 2022.01.02 [알고리즘] 프로그래머스 다리를 지나는 트럭 Java(자바) (0) 2021.12.30 [알고리즘] 프로그래머스 다단계 칫솔 판매 Java(자바) (0) 2021.11.25 [알고리즘] 백준 다리만들기 2146번 JAVA(자바) (0) 2021.11.04