did_story

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / JAVA] ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ ๋ณธ๋ฌธ

Algorithm๐ŸŒŠ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / JAVA] ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚˜๋Š” ํŠธ๋Ÿญ

์–ด์ œ์‹œ์ž‘ 2026. 5. 14. 13:43

 

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์ ์‹ฌ์‹œ๊ฐ„ ์นœ๊ตฌ๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„๊ด€๋ จํ•ด์„œ ์งˆ๋ฌธ์„ ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์งˆ๋ฌธํ–ˆ๋Š”๋ฐ ๋‚ด๊ฐ€ ์•ˆํ’€๊ณ  ๋Œ€๋‹ตํ•˜๋ฉด, ์ด์ƒํ•œ ๋Œ€๋‹ต ํ•  ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜์ง€ ์•Š์€๊ฐ€?!!!?!?

 

1. ์ ‘๊ทผ

๋ณด์ž๋งˆ์ž ์ƒ๊ฐํ•œ๊ฒƒ.

  1. ๊ฒฝ๊ณผ์‹œ๊ฐ„์ด ์™œ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒƒ์ผ๊นŒ?
    • ์•„ bridge์— ์˜ฌ๋ผ๊ฐ€๋Š” weight ์˜ ๋ฌด๊ฒŒ๊ฐ€ ํ•œ์ •๋˜์–ด์žˆ๊ตฌ๋‚˜. ⇒ ์ „์—ญ์œผ๋กœ weight์„ ํ•ฉ์‚ฐํ•ด์•ผ์ง€.
  2. ์ œํ•œ์กฐ๊ฑด์€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€??
    • bridge_length์€ ์ดˆ์™€ ์ง์ ‘์  ์ƒ๊ด€์žˆ๋Š”๊ฒƒ ⇒ bridge์• ์„œ ๋‚˜์˜ค๋Š” truck๋ฅผ ๋งค์ดˆ ํ™•์ธํ•ด์•ผ๊ฒ ๋‹ค.

 

2.  ํ’€์ด

  • ์ดˆ ๋งˆ๋‹ค ๋‚˜์˜ค๋Š” ํŠธ๋Ÿญ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž ⇒ Deque ์จ์•ผ์ง€
  • ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ๋ฌด๊ฒŒ๋Š” ์ „์—ญ๋ณ€์ˆ˜๋กœ ํ•ฉ์‚ฐํ•ด์„œ ๊ด€๋ฆฌํ•˜์ž.
import java.util.ArrayDeque;
import java.util.Deque;

class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {
        int answer = 0;
        Deque<Integer> states_bridge = new ArrayDeque<Integer>();
        int weigth_on_bridge = 0;
        
        for (int i = 0 ; i < bridge_length ; i++) states_bridge.add(0);
        
        
        int idx = 0;
        while(idx < truck_weights.length || !states_bridge.isEmpty()) {
            
            int truck = states_bridge.pop();
            if (truck != 0) weigth_on_bridge -= truck;
        
            if(idx < truck_weights.length){
                if (weigth_on_bridge + truck_weights[idx] <= weight) {
                    states_bridge.add(truck_weights[idx]);
                    weigth_on_bridge += truck_weights[idx];
                    idx++;
                } else {
                    states_bridge.add(0); 
                }
            }
            
            answer++;
        }
        
        return answer;
    }
}

 

์ด๋ณด๋‹ค ๋” ์ข‹์€ ์ฝ”๋“œ, ์ข‹์€ ์ ‘๊ทผ์ด ๋งŽ์„๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ์‹œํ—˜์—์„œ๋Š” ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ํ‘ธ๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ˆ, ๋ณธ์ธ์˜ ๋ˆˆ์— ์ž˜ ๋“ค์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.