카테고리 없음

99클럽 코테 스터디 TIL 5일차

느리지만 꾸준하게 2024. 5. 24. 19:30
  • 오늘의 학습 키워드 : 우선순위 큐, PriorityQueue
// 기본형: 우선순위가 낮은 숫자가 먼저 나옴 (작은 숫자)

PriorityQueue<Integer> pQ = new PriorityQueue<>();

// 우선순위가 높은 숫자가 먼저 나옴 (큰 숫자)
PriorityQueue<Integer> pQ = new PriorityQueue<>(Collections.reverseOrder());

 

  • add() : 우선순위 큐에 원소를 추가, 큐가 꽉 찬 경우 에러
  • offer() : 우선순위 큐에 원소를 추가. 값 추가 실패 시 false
  • poll() : 우선순위 큐에서 첫 번째 값을 반환 제거, 비어있으면 null
  • remove() : 첫 번째 값 반환하고 제거, 비어있으면 에러
  • isEmpty() : 첫번째 값 반환하고 제거, 비어있으면 에러
  • clear() : 우선순위 큐를 초기화
  • size() : 우선순위 큐에 포함되어 있는 원소 수 반환

 

PriorityQueue 기본적인 사용법

import java.util.PriorityQueue;

public class Example {
	public static void main(String[] args) {
    	
        // 기본형 : 우선순위가 낮은 숫자가 먼저 나옴 (작은 숫자)
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        
        pq.offer(1); // pq에 원소 1 추가
        pq.offer(5); // pq에 원소 6 추가
        pq.offer(2); // pq에 원소 2 추가
        
        // pq가 비어있으면 true, 그렇지 않으면 false
        while(!pq.isEmpty()) {
        	System.out.println("pq.poll() = " + pq.poll();
        }
    }
}

 

 

 

 

 

릿코드 - Minimum Number Game

class Solution {
    public int[] numberGame(int[] nums) {
        Arrays.sort(nums);

        for (int i = 0; i < nums.length; i += 2) {
            final int temp = nums[i];
            nums[i] = nums[i + 1];
            nums[i + 1] = temp;
        }

        return nums;
    }
}

 

 

 

프로그래머스 - 더 맵게

import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> que = new PriorityQueue<>();
        
        for (int i = 0; i < scoville.length; i++) {
            que.add(scoville[i]);
        }
        
        while(que.peek() < K) {
            if (que.size() == 1)
                return -1;
            que.add(que.poll() + que.poll() * 2);
            answer++;
        }
        
        return answer;
    }
}