알고리즘

LEETCODE, Minimum Number

giyoung2 2024. 7. 10. 18:56

 

 

 

 

 

문제에서 요구하는 것은 nums라는 배열이 주어지고 그 배열 안에는

짝수 개의 요소들만 들어갈 수 있는 게 전제조건이고,

 

이제 nums안의 요소들을 2개씩 꺼내야하는데

 

Alice라는 친구가 nums 배열 안에 있는 요소들 중에서

최솟값을 꺼내고

 

Bob이라는 친구가 그 다음으로 작은 값을 꺼내서

 

Bob친구가 꺼낸 값을 다시 새로운 배열에 추가하고

Alice친구가 꺼낸 값을 새로운 배열에 추가해주면서

새로운 배열을 만들어내는 코드입니다.

 

요약하자면 꺼내는 순서는 Alice --> Bob이고,

다시 배열에 추가하는 순서는 Bob --> Alice입니다.

 

ex) nums = {5, 4, 2, 3}이고 최솟값 2를 Alice가 그 다음 작은 값인 3을 Bob이 꺼내서

{3, 2}순서로 집어넣어주고 남은 {5, 4}도 똑같은 방식으로 {3, 2}배열에 집어넣으면

{3, 2, 5, 4}가 됩니다.

 

 

 
 

 

 

이번 문제의 핵심 키워드는 우선순위 큐입니다.

PriorityQueue라고 객체 생성을 한 곳이 우선순위 큐를 구현한 부분입니다.

 

우선순위 큐는 기본적으로 최소 우선 순위로 지정이 되어있기 때문에

위의 코드에서는 별도로 지정할 필요 없이 사용을 하면

알아서 최솟값부터 우선순위를 부여해주게됩니다.