[프로그래머스] 절대 외부 IDE를 써선 안돼/Java

[lv3] 숫자 게임

SH3542 2024. 11. 4. 18:07

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