문제에서 요구하는 것은 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라고 객체 생성을 한 곳이 우선순위 큐를 구현한 부분입니다.
우선순위 큐는 기본적으로 최소 우선 순위로 지정이 되어있기 때문에
위의 코드에서는 별도로 지정할 필요 없이 사용을 하면
알아서 최솟값부터 우선순위를 부여해주게됩니다.
'알고리즘' 카테고리의 다른 글
프로그래머스, K번째수 (0) | 2024.07.10 |
---|---|
LEETCODE, Smallest Number in Infinite Set (0) | 2024.07.10 |
LEETCODE, Valid Parenthesis (0) | 2024.07.10 |
프로그래머스, 같은 숫자는 싫어 (0) | 2024.07.10 |
프로그래머스, 완주하지 못한 선수 (0) | 2024.07.10 |