반응형 Coding Test103 [프로그래머스] 이중우선순위큐 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 의미한다. 명령어 수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 한다. 빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시한다. 2. 풀이 PriorityQueue 를 이용한 문제 풀이 최대값을 위한 최대힙을 이용하여 PriorityQueue 로 나타낸다. 최소값을 위한 최소힙을 이용하여 Priority.. 2021. 11. 25. [프로그래머스] 디스크 컨트롤러 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 작업의 요청부터 종료까지 걸린 시간이 가장 줄이는 방법으로 작업을 수행하여 각 작업의 요청부터 종료까지 걸린 시간의 평균을 return 한다. 2. 풀이 PriorityQueue 를 이용한 문제 풀이 작업의 소요시간을 오름차순으로 유지하기 위해 PriorityQueue 로 나타낸다. 작업의 요청시점을 오름차순으로 정렬 Arrays.sort(jobs, (o1, o2) -> o1[0] - o2[0]); 현재 시간 보다 작거나 같은 요청 시간 큐에 추가 큐에 작업이 없다면 작업 요청시점이 가장 빠른 작업 추가 큐에 작업이 있다면 작업 소요시간이 가장 빠른 작업 수행 3. 코드 import java.util.*; class Solut.. 2021. 11. 25. [프로그래머스] 더 맵게 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 한다. 섞은 스코빌 지수 = 가장 낮은 스코빌 지수 + (두 번째로 낮은 스코빌 지수 * 2) 2. 풀이 PriorityQueue 를 이용한 문제 풀이 음식의 스코빌 지수를 오름차순으로 유지하기 위해 PriorityQueue 로 나타낸다. 음식의 개수가 2개 미만이 되면 더이상 섞을 수 없으므로 -1을 리턴한다. PriorityQueue 를 통해 제일 작은 스코빌 지수가 K 보다 작으면 음식을 섞고 다시 PriorityQueue 에 추가한다. 3. 코드 import java.util.*; class Solution { public int .. 2021. 11. 25. [프로그래머스] 프린터 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 내가 요청한 문서는 몇번째로 인쇄되는지 return 한다. 2. 풀이 Queue 를 이용한 문제 풀이 입력 순서대로 반환하면 되기 때문에 대기목록을 Queue 로 나타낸다. 남아 있는 인쇄 작업의 중요도를 배열 arr 로 저장한다. 대기목록(Queue)에서 하나의 작업을 poll()하고, location-- 을 한다. 그리고 남아 있는 인쇄 작업 중 자신보다 중요도가 높은 것이 있는지 확인한다. 자신보다 중요도가 높은 것이 있을 경우 다시 대기목록.. 2021. 11. 25. [프로그래머스] 기능개발 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 배포 순서에대로 작업의 진도 (progresses)와 작업의 속도 (speeds)를 통해 작업이 완료되었을 때 몇개의 작업이 배포되는지 return 한다. 뒤에 있는 작업이 먼저 완료되면 앞의 작업이 완료될 때 까지 기다렸다가 같이 배포된다. 배포는 하루에 1번 가능하다. 2. 풀이 Queue 를 이용한 문제 풀이 입력 순서대로 반환하면 되기 때문에 작업의 완료 시간을 Queue 로 나타낸다. progresses 와 speeds 를 통해 작업이 완료되는 시간을 계산하고 Queue에 넣는다. 작업이 완료되는 시간을 계산할 때 소수점을 통해 반올림을 해야하므로 100.0 을 통해 타입은 int 가 아닌 double 을 사용한다. .. 2021. 11. 25. [프로그래머스] 주식가격 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지 구한다. 2. 풀이 스택 를 이용한 문제 풀이 주식이 떨어지지 않은 기간은 ans배열로, 주식이 떨어지지 않은 기간을 구하기 위해 stack을 사용한다. 반복문을 돌면서 현재 주식 가격을 stack에 push한다. push 전에 현재 주식가격이 스택의 맨 위에 있는 주식보다 작으면 현재 주식과 스택의 맨 위 주식의 시간을 구한다. 스택의 맨위 주식을 pop한다. 반복문이 끝나고 남아있는 주식은 끝까지 가격이 떨어지지 않은 주식이므로 prices배열의 길이에서 해당 주식의 위치를 뺀 값이다. 3. 코드 import.. 2021. 11. 25. [프로그래머스] 다리를 지나는 트럭 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건넌다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는 알아내야 한다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딘다. 2. 풀이 Queue 를 이용한 문제 풀이 트럭은 다리를 대기하는 순서대로 건너기 때문에 다리를 건너는 트럭을 Queue로 나타낸다. 다리를 건너고 있는 트럭이 나갈 시간일 때 Queue에서 트럭의 정보를 뺀다. 다리가 견딜수 있는 무게에서 트럭의 무게를 더한다. 다리가 견딜 수 있는 무게가 대기 트럭의 무게보다 클 때 Queue에 트럭의 정보{트럭의 무게, 다리에서 나갈 시간}를 .. 2021. 11. 25. [프로그래머스] K번째수 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구한다. 예를 들어, array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3 2. 풀이 정렬 을 이용한 문제 풀이 Arrays.copyOfRange()를 이용해 배열을 자른다. Arrays.sort()를 이용해 정렬을 한다. 3. 코드 import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i=0; i 2021. 11. 25. [프로그래머스] H-Index [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 2. 풀이 정렬 을 이용한 문제 풀이 주어진 숫자 배열을 Arrays.sort()를 이용해 오름차순으로 정렬을 한다. for문을 통해 현재 인용횟수와 남은 논문의 수를 비교하여 H-Index를 구한다. 3. 코드 import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; int N = citations.length; Arrays.sort(citations); for(int i=0; i.. 2021. 11. 25. 이전 1 2 3 4 5 ··· 12 다음 반응형