[프로그래머스] (Heap) 이중우선순위큐 (C++) 이중우선위 큐 (Level 3) 문제 전체 문제 보기 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 접근법 보통 우선순위큐는 항상 가장 우선순위가 높은 원소를 뽑기 위해서 사용한다. 이런 우선순위 큐에서는 아쉽게도 가장 우선순위가 낮은 원소를 뽑거나 알 수는 없다. 이 문제에서 요구하는 바는 가장 우선순위가 높은 원소를 뽑을 수도, 가장 우선순위가 낮은 원소를 뽑을 수도 있는 이중 우선순위 큐를 구현하는 것이다. 이중 우선순위 큐를 구현하기 위한 자료구조는 반드시 우선순위를 기준으로 정렬되어 있어야한다. 이때 사용하기 좋은 자료구조는 균형 이진트리이다. 물론 배열이나 연결 리스트로도 구현할 수는 있다. 다만 배열과 연결 리스트를 항상 정렬된 상태로 유지하기 위해서는 데이터를 삽입할 때.. Algorithms/Heap 4년 전
[프로그래머스] (Heap) 디스크 컨트롤러(C++) 디스크 컨트롤러(Level 3) 문제 전체 문제 보기 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 접근법 이 문제에서 요구하는 바는 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는가?이다. 평균 처리시간을 줄이기 위해서는 작업의 소요시간이 가장 짧은 작업부터 처리하는 SJF(Shortest Jop First) 방식을 사용해야 한다. 그리고 우선순위 큐를 사용하면 현재 대기 중인 작업 중 가장 짧은 작업을 효율적으로 선택할 수 있다. 이 문제를 풀기 위해서.. Algorithms/Heap 4년 전
[프로그래머스](Heap) 더 맵게 (C++) 더 맵게 (Level 2) 문제 전체 문제 보기 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 접근법 문제에서 요구하는 것은 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해서 섞어야 하는 최소 횟수이다. 음식을 섞을 때는 다음과 같은 방법으로 섞게 된다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 두 개의 음식을 섞을 때마다 스코빌 지수는 증가하기 때문에 원소들을 순차적으로 정렬을 하더라도 순서가 뒤바뀌는 일이 발생.. Algorithms/Heap 4년 전