๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋‘ ํ ํ•ฉ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ | ์ž๋ฐ”

by Yunny52 2023. 5. 3.

2022 ์นด์นด์˜ค ํ…Œํฌ ์ธํ„ด์‹ญ

 

๐Ÿ“Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ

๋ณ„๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—†๊ณ , ๊ตฌํ˜„ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 


๐Ÿ“Œ ํ’€์ด

์ •์งํ•˜๊ฒŒ ํ์˜ ์‚ฌ์ด์ฆˆ๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ํ’€์ดํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

ํ•œ์ชฝ ํ์˜ ํ•ฉ์„ (๋‘ ํ์˜ ํ•ฉ / 2)๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ์–ด๋–จ๊นŒ?

 

ํ•œ์ชฝ ํ์˜ ํ•ฉ์ด

(์ดˆ๊ธฐ์˜ ๋‘ ํ์˜ ํ•ฉ / 2)๋ณด๋‹ค ํฌ๋ฉด pollํ•˜์—ฌ ๋‹ค๋ฅธ ํ์— add ํ•ด์ฃผ๊ณ ,

์ž‘์œผ๋ฉด ๋‹ค๋ฅธ ํ์—์„œ poll ํ•˜์—ฌ ํ•œ์ชฝ ํ์— add ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๋ฐ˜๋ณต๋ฌธ์€ ํ•œ์ชฝ ํ์˜ ํ•ฉ๊ณผ (์ดˆ๊ธฐ์˜ ๋‘ ํ์˜ ํ•ฉ / 2)์ด ๊ฐ™์•„์งˆ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ๋˜๋Š”๋ฐ,

์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋„ ๋‘ ํ์˜ ํ•ฉ์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ์—, ์ดˆ๊ธฐ์˜ ํ•œ์ชฝ ํ์˜ ๊ธธ์ด์˜ 3๋ฐฐ ๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋ฐ˜๋ณตํ•ด์ฃผ๊ณ , ๊ทธ๋ž˜๋„ ๋‘ ํ์˜ ํ•ฉ์ด ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด -1์„ ๋ฆฌํ„ดํ•ด์ฃผ์ž.

 

์—ฌ๊ธฐ์„œ, ์™œ 3๋ฐฐ์ผ๊นŒ?

๋Œ€๊ฐ• ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ํ1๊ณผ ํ2์˜ ๊ฐ’๋“ค์„ ์„œ๋กœ ์ „๋ถ€ ๊ตํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์ธ๋ฐ ์ด๋•Œ ๋Œ€๋žต ํ์˜ ๊ธธ์ด์˜ 2๋ฐฐ ๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํ์˜ ๊ธธ์ด์˜ 3๋ฐฐ ๋งŒํผ ๋ฐ˜๋ณตํ•ด์ค€๋‹ค๋ฉด, ์˜ˆ์™ธ ์ƒํ™ฉ๋„ ์—†๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๋„ ๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

 


๐Ÿ“Œ ์ฝ”๋“œ

import java.util.*;

class Solution {
    public int solution(int[] queue1, int[] queue2) {
        int answer = -2;
        
        Queue<Integer> que1 = new LinkedList<>();
        Queue<Integer> que2 = new LinkedList<>();
        
        long total = 0; // ๋‘ ํ์— ๋‹ด๊ธด ์ˆ˜๋“ค์˜ ํ•ฉ / 2
        long hap = 0; // ํ1์˜ ํ•ฉ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ €์žฅํ•  ๋ณ€์ˆ˜
        
        for(int i = 0; i < queue1.length; i++) {
            total += queue1[i];
            hap += queue1[i];
            total += queue2[i];
            que1.add(queue1[i]);
            que2.add(queue2[i]);
        }
        
        int maxCount = queue1.length * 3;
        total /= 2; // ํ•˜๋‚˜์˜ ํ์˜ ํ•ฉ์ด ์ „์ฒด/2์™€ ๊ฐ™์œผ๋ฉด ๋จ
        
        while(hap != total) {
            // ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ๊ฐ ํ์˜ ์›์†Œ ํ•ฉ์„ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†์„ ๋•Œ
            if(maxCount == 0)
                return -1;
            
            // ํ1์˜ ํ•ฉ์ด ํ2์˜ ํ•ฉ๋ณด๋‹ค ํด ๋•Œ
            if(hap > total) {
                int temp1 = que1.poll();
                hap -= temp1;
                que2.add(temp1);
            }
            // ํ1์˜ ํ•ฉ์ด ํ2์˜ ํ•ฉ๋ณด๋‹ค ์ž‘์„ ๋•Œ
            else {
                int temp2 = que2.poll();
                hap += temp2;
                que1.add(temp2);
            }
            
            maxCount--;
        }
        
        
        return queue1.length * 3 - maxCount;
    }
    
}

https://school.programmers.co.kr/learn/courses/30/lessons/118667

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

 

๋Œ“๊ธ€