priorityqueue 6

[프로그래머스] 디스크 컨트롤러 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/42627# 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은..

[BOJ 1655] 가운데를 말해요 (Java)

문제 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 백준이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 백준이가 정수를 하나씩 외칠때마다 동생은 지금까지 백준이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 백준이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야 한다. 예를 들어 백준이가 동생에게 1, 5, 2, 10, -99, 7, 5를 순서대로 외쳤다고 하면, 동생은 1, 1,..

[BOJ 11286] 절댓값 힙 (Java)

문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 PriorityQueue를 사용하면 된다. Comparator로 정렬 조건을 명시해주었다. 소스코드 package heap; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; impo..

[BOJ 1927] 최소 힙 (Java)

문제 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 PriorityQueue로 풀면 된다. PriorityQueue는 정수형의 경우 기본정렬이 오름차순이므로 따로 Comparator를 만들어줄 필요는 없다. 소스코드 package heap; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; impo..

[프로그래머스] 이중우선순위큐 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/42628# 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이 최소힙, 최대힙을 각각 두 개 만들어서 풀었다. size가 0이 되었을 때는 큐를 clear 해줘야한다. 안 그러면 일부 남은 데이터로 인해 오류가 발생한다. 소스코드 import java.util.*; class CustomQueue{ int size; PriorityQueue minHeap; PriorityQueue maxHeap; public CustomQueue(){ this.size = 0; this.minHeap = new PriorityQueue(new Comparator(){ @Override public int..

[프로그래머스] 야근 지수 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/12927 코딩테스트 연습 - 야근 지수 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도 programmers.co.kr 풀이 Level3 이지만 체감 난이도는 Level1 느낌이다. 1. 모든 work를 최대힙에 담는다. 2. 야근 시간만큼 순회하면서 최대값을 가지는 원소를 poll하여 -1 한후 다시 offer하였다. 3. 이후 queue에 남은 원소를 제곱하여 합계를 내었다. 소스코드 import java.util.*; import java.lang.*; ..