[PROG] 118667 두큐합 같게 만들기

호호빵·2022년 11월 12일
0

Algorithm

목록 보기
43/46
class Solution {
    public int solution(int[] queue1, int[] queue2) {
        int answer = 0;
        long sum = 0;
        long target = 0;

        long sum1 = Arrays.stream(queue1).sum();
        long sum2 = Arrays.stream(queue2).sum();

        sum = sum1 + sum2;
        target = sum / 2;


        Queue<Integer> que1 = new LinkedList<>();
        Queue<Integer> que2 = new LinkedList<>();

        for (int i = 0; i <= queue1.length-1 ; i++) {
            if (queue1[i] <= target) {
                que1.add(queue1[i]);
            }
            if (queue2[i] <= target) {
                que2.add(queue2[i]);
            }
        }

        if (que1.size() == que2.size() && sum % 2 == 0) {
            while (sum1 != sum2) {
                if (sum1 > sum2) {
                    int popNum = que1.poll();
                    que2.add(popNum);
                    sum1 -= popNum;
                    sum2 += popNum;
                } else {
                    int popNum = que2.poll();
                    que1.add(popNum);
                    sum2 -= popNum;
                    sum1 += popNum;
                }
                answer++;
            }
        } else {
            answer = -1;
        }


        return answer;
    }
}
class Solution {
    public int solution(int[] queue1, int[] queue2) {
        int answer = 0;
        long sum1 = 0;
        long sum2 = 0;

        List<Integer> que = new ArrayList<>();

        for (int i = 0; i < queue1.length; i++) {
            sum1 += queue1[i];
            sum2 += queue2[i];
            que.add(queue1[i]);
        }

        for (int i = 0; i < queue1.length; i++) {
            que.add(queue2[i]);
        }

        int idx1 = 0;
        int idx2 = que.size()/2 ;

        while (sum1 != sum2) {
            if (idx1 >= que.size() || idx2 >= que.size()) {
                answer = -1;
                break;
            } else {
                if (sum1 < sum2) {
                    sum2 -= que.get(idx2);
                    sum1 += que.get(idx2);
                    idx2++;
                } else {
                    sum1 -= que.get(idx1);
                    sum2 += que.get(idx1);
                    idx1++;
                }
            }
            answer++;
        }
        
        return answer;
    }
}
profile
하루에 한 개념씩

0개의 댓글