전체 글61 힙(Heap)-디스크 컨트롤러 프로그래머스(힙)- 디스크 컨트롤러 해당 문제는 2개의 우선순위 큐를 이용하여 풀었습니다. 하나는 접수시간을 기준으로 하는 큐 jobInfoQueue, 하나는 작업시간을 기준으로 하는 waitingQueue를 두었습니다. 한번에 하나의 작업밖에 진행 할 수 없고, 전체 작업시간은 어떤 순서로 진행하든 동일 하기 때문에 endTime을 미리 계산 한 후 현재 시간이 endTime 보다 작을때까지 반복문을 수행하게 합니다. 접수대기중인 잡의 정보를 가진 jobInfoQueue에서 peek 값을 확인하여 접수시간이 현재시간 보다 작은 잡의 정보를 전부 wattingQueue에 집어 넣은 후, 제일 작업시간이 짧은 잡의 정보를 꺼내 잡을 수행하게 합니다. 이후 작업시간 만큼은 어떠한 잡도 수행하지 못하기 때문에.. 2022. 2. 10. 힙(Heap) 더맵게 프로그래머스(Heap) 더맵게 이번 문제는 남은 스코빌 지수에서 현재 작은 값을 뽑아 그 값이 K 보다 작고 2번째로 섞을 스코빌 지수가 있다면 공식에 의해 섞어서 남은 스코빌에 합쳐서 해당 방법을 반복하는 알고리즘 문제입니다. 우선순위큐라는 개념에 맞춰 로직을 구현하면 손쉽게 풀 수 있고 자바에서는 PriorityQueue를 사용해 손쉽게 알고리즘을 구현할 수 있었습니다. public int solution(int[] scoville, int K) { int answer = 0; Queue priorityQueue = new PriorityQueue(); for (int i =0; i< scoville.length; i++) { priorityQueue.add(scoville[i]); } while (.. 2022. 2. 9. 스택/큐 - 주식가격 프로그래머스(스택/큐) - 주식가격 이 문제는 문제 설명을 잘 읽어야 했습니다. 각초 시점(1초, 2초 등)의 가격 기준으로 이 후 최초 가격이 떨어지는 시점까지 시간을 구하는 문제였습니다. 대신 떨어진 시점에서의 시간도 계산에 넣어줘야 합니다. 마지막은 떨어지는 시점이 없으므로 무조건 0이기도 합니다. public int[] solution(int[] prices) { int pricesCount = prices.length; int[] answer = new int[pricesCount]; for(int i = 0; i < pricesCount; i++) { int keepSecond = 0; for (int j = i + 1; j < pricesCount; j++) { keepSecond++; if.. 2022. 2. 8. 이전 1 ··· 15 16 17 18 19 20 21 다음