์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA

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

2023. 2. 22. 11:26


import java.util.*;
class Solution {
    public int solution(int bridge_length, int weight, int[] truck_weights) {

        Queue<Integer> bridge = new LinkedList<>();
        Queue<Integer> truck = new LinkedList<>();
        
        for(int i=0;i<truck_weights.length;i++){
            truck.offer(truck_weights[i]);
        }
        
        for(int i=0;i<bridge_length;i++){
            bridge.offer(0);
        }
        
        // ์ฒซ๋ฒˆ์งธ ์ฐจ ์ถœ๋ฐœ
        int totalWeight = 0;
        int totalTruckNum = 0;
        int time = 0;
        
        while(true){
           
            if(truck.isEmpty()){
                break;
            }
            //ํŠธ๋Ÿญ์ด ๋‚ด๋ฆด ์ฐจ๋ก€์ธ ๊ฒฝ์šฐ
            if(bridge.peek()!=0){
                totalWeight-=bridge.poll();
                totalTruckNum--;
            }else{
                bridge.poll();
            }
      
            int waitingTruck = truck.peek();
            //์ฐจ๊ฐ€ ๋” ์˜ฌ๋ผ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ (๋‹ค๋ฆฌ์— ๊ณต๊ฐ„์ด ์žˆ์œผ๋ฉด์„œ ๋ฌด๊ฒŒ๊ฐ€ ์ดˆ๊ณผ๋˜์ง€ ์•Š์„ ๋•Œ)
            if((bridge_length>=totalTruckNum)&&(weight>=totalWeight+waitingTruck)){
                bridge.offer(truck.poll());
                totalWeight+=waitingTruck;
                totalTruckNum++;
            //์ฐจ๊ฐ€ ๋” ๋ชป์˜ฌ๋ผ์˜ค๋Š” ๊ฒฝ์šฐ
            }else{
                bridge.offer(0);
            }        
            time++;          
        }
        
        time+=bridge_length;
        
        return time;
    }
}

 

๊ฒจ์šฐ๊ฒจ์šฐ ํ˜ผ์ž ํž˜์œผ๋กœ ํ’€์—ˆ๋‹ค.


๋จผ์ € ์ฝ”๋“œ ํ๋ฆ„์€ ์˜ˆ์ œ ์ฒซ๋ฒˆ์งธ ์ƒํ™ฉ์ด๋ผ๋ฉด, 

 

bridge ํ๋ฅผ ์„ ์–ธํ•ด์„œ, ๋‹ค๋ฆฌ ๊ธธ์ด๋งŒํผ '0' ์„ ๋„ฃ์–ด๋†จ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  truck ํ๋ฅผ ์„ ์–ธํ•ด์„œ, ํŠธ๋Ÿญ ๋ฌด๊ฒŒ๋ฅผ ๋„ฃ์–ด๋†จ๋‹ค.

 

bridge = [ 0 , 0 ]

truck = [ 7 4 5 6 ]

 


๊ทธ๋ฆฌ๊ณ  truck์ด ๋‹ค๋ฆฌ๋ฅผ ์ง€๋‚  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ,

 

๋‹ค๋ฆฌ์— ํŠธ๋Ÿญ์ด ์˜ฌ๋ผ๊ฐˆ ๊ณต๊ฐ„์ด ์žˆ๋Š”๊ฐ€ + ํŠธ๋Ÿญ์˜ ์ด ๋ฌด๊ฒŒ ํ•ฉ์ด ์ œํ•œ ๋ฌด๊ฒŒ๋ฅผ ๋„˜์ง€ ์•Š๋Š”๊ฐ€์ด๋‹ค.

 

๋”ฐ๋ผ์„œ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด truck ํ์—์„œ poll()์„ ํ•œ๋’ค bridgeํ์— offer()ํ•œ๋‹ค.

๋งŒ์•ฝ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด, ๊ทธ๋ƒฅ '0'์„ offer()ํ•œ๋‹ค.

 

์ฆ‰, ๋‹จ๊ณ„๋ณ„๋กœ bridgeํ๋ฅผ ๋ณด๋ฉด

 

    0์ดˆ          1์ดˆ           2์ดˆ          3์ดˆ           4์ดˆ          5์ดˆ           6์ดˆ          7์ดˆ             8์ดˆ

[ 0 , 0 ] → [ 0 , 7 ] → [ 7 , 0 ] → [ 0 , 4 ] → [ 4 , 5 ] → [ 5 , 0 ] → [ 0 , 6 ] → [ 6 , 0 ] → [ 6 , 0 ] 

  

์œ„์™€ ๊ฐ™์ด ๋‚˜์˜ค๋„๋ก ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ๋ชฉํ‘œ์ด๋‹ค.

 


๋จผ์ €, while ๋ฃจํ”„๋ฌธ์€ truck ํ๊ฐ€ ์™„์ „ํžˆ ๋น„๋ฉด ํƒˆ์ถœํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

 

๋”ฐ๋ผ์„œ, ์œ„ bridge ํ ์˜ˆ์‹œ ๊ทธ๋ฆผ์—์„œ ๋งˆ์ง€๋ง‰ ํŠธ๋Ÿญ ๋ฌด๊ฒŒ๋Š” 6์ด๋ฏ€๋กœ

 

    6์ดˆ

 [ 0 , 6 ] 

 

์—์„œ while๋ฌธ์„ ํƒˆ์ถœํ•  ๊ฒƒ์ด๋‹ค. ์–ด์ฐจํ”ผ ๋งˆ์ง€๋ง‰ ํŠธ๋Ÿญ์ด๊ณ  ๋‹ค๋ฆฌ ์ „์ฒด ๊ธธ์ด๋งŒํผ ๋” ๊ฐ€๋ฉด ๋๋‚œ๋‹ค.

 

whlie๋ฌธ์„ ํƒˆ์ถœํ•˜๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์‚ฐํ•œ time์— bridge length๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. (6์ดˆ + 2์ดˆ)

 


bridge.peek()์„ ํ•ด์„œ, 0์ด๋ฉด ๋ณ„๋‹ค๋ฅธ ๋กœ์ง์ด ํ•„์š”์—†์ง€๋งŒ 0์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋Š” ํŠธ๋Ÿญ์ด ๋‚ด๋ ธ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ

 

ํŠธ๋Ÿญ ๊ฐฏ์ˆ˜์™€, ํ˜„์žฌ ๋‹ค๋ฆฌ์— ์žˆ๋Š” ํŠธ๋Ÿญ ๋ฌด๊ฒŒ๋ฅผ ๊ฐ์†Œ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.

 

์ฐธ๊ณ ๋กœ, ๋จผ์ € ํŠธ๋Ÿญ์„ ๋‚ด๋ฆฌ๋Š” ์ž‘์—…์„ ํ•ด์•ผ, ๋‹ค๋ฆฌ ์œ„ ํŠธ๋Ÿญ ๋ฌด๊ฒŒ๋ฅผ ๊ณ„์‚ฐํ• ๋•Œ ํŽธํ•˜๋‹ค.

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šคใ€์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ใ€‘
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šคใ€JadenCase ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐใ€‘
    • [JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šคํƒ/ํ -ใ€ํ”„๋ฆฐํ„ฐใ€‘
    • [JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ•ด์‹œ -ใ€๋ฒ ์ŠคํŠธ์•จ๋ฒ”ใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”