https://school.programmers.co.kr/learn/courses/30/lessons/12987#
B가 많이 이기는 방법
1. A와 B를 내림차순 정렬한다.
2. B의 top이 A의 top을
이긴다면, B top과 A top을 매칭한다. => 점수 획득
지거나 동점이라면, B tail과 A top을 매칭한다. => 점수 미획득
(동점인 경우 그냥 매칭시켜서 최적보다 높은 점수인 경우는 없다.)
앞과 뒤의 원소를 모두 뺼 수 있어야 하므로 deque를 사용했다.
내가 알기론, 기본형 배열을 내림차순 정리하는 메서드는 제공하지 않는다.
따라서, tmp 컨테이너에 정렬한 후 다시 배열로 옮기거나 wrapper class 배열로 바꿔야한다.
때문에, 그냥 오름차순 정렬하고 0이 아닌 A.length -1부터 비교했다.
import java.util.*;
class Solution {
public int solution(int[] A, int[] B) {
int answer = 0;
Deque<Integer> deque = new ArrayDeque<>();
Arrays.stream(B).sorted().forEach(deque::offerLast);
Arrays.sort(A);
int N = A.length;
int Atop = N-1;
for(int i=0; i<N; i++) {
if(deque.getLast() > A[Atop]) {
deque.removeLast();
answer++;
Atop--;
}
else {
deque.removeFirst();
Atop--;
}
}
return answer;
}
}
'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글
[lv3] 스티커 모으기(2) (0) | 2024.11.04 |
---|---|
[lv3] 기지국 설치 (0) | 2024.11.04 |
[lv3] 최고의 집합 (0) | 2024.11.04 |
[lv3] 야근 지수 (0) | 2024.11.04 |
[lv3] 입국심사 (0) | 2024.10.19 |